などのメソッドを持つ理由は何ですかvoid QList::push_back ( const T & value )
QTで同じことをしている場合append()
、ドキュメンテーションはどのような互換性を意味しますか。誰でもこれを詳しく説明してもらえますか
以下は、 QTの公式ドキュメントからの声明です
"この関数は STL 互換性のために提供されています。append(value) と同等です"
などのメソッドを持つ理由は何ですかvoid QList::push_back ( const T & value )
QTで同じことをしている場合append()
、ドキュメンテーションはどのような互換性を意味しますか。誰でもこれを詳しく説明してもらえますか
以下は、 QTの公式ドキュメントからの声明です
"この関数は STL 互換性のために提供されています。append(value) と同等です"
これは通常、テンプレート パラメーターとして標準コンテナーを想定するメソッド テンプレートを で使用できるようにするために使用されQList
ます。これらは同じメソッドを共有するためです。
例えば:
template<typename Container>
void move_elements(Container &to, const std::vector<int> &from)
{
for (auto elem : from)
to.push_back(elem);
}
パラメータとしてastd::list<int>
と a の両方で呼び出すことができます。QList<int>
to
これは互換性のためであり、QList を標準コンテナーで動作するアルゴリズムに送信できます
。これが主な利点だと思いますので、 からのすべての操作を使用できます<algorithm>
。find_if
fromの例を挙げ<algorithm>
ます:
bool hasChildChecked(){
return std::find_if(childItems_.begin(),
childItems_.end(),checked()) != childItems_.end();
}
私のchildItems_は次のように宣言されています:
QList<TreeItem*> childItems_;
struct checked {
bool operator()(const TreeItem* t) {
return t->moduleInfo_.currentlyEnabled;
}
};
この種の互換性は私の時間を本当に節約し、コーディングをより簡単にします。
次のような場合に遭遇する可能性があります。
template <
template <
typename ValueType,
typename Allocator
> class Container
> class garbage_collector
{
/* some implementation */
};
QList は STL コンテナーと同じメソッド名を持っているため、このコンテキストで使用できます。
C++ の STL (標準テンプレート ライブラリ) は、リストとベクトルに関数 push_back() を使用するため、ほとんどの C++ プログラマーにとっておなじみの方法です。したがって、メソッドを呼び出す際にテンプレート パラメーターの互換性を確保するための追加のメソッドが提供されています。