有诸如此类的方法的原因是什么void QList::push_back ( const T & value )
append()
在 QT 中,当它与文档的含义是什么兼容时做同样的事情。谁能详细说明一下
以下是来自QT官方文档的声明
"这个函数是为了兼容 STL 而提供的。它相当于 append(value) "
有诸如此类的方法的原因是什么void QList::push_back ( const T & value )
append()
在 QT 中,当它与文档的含义是什么兼容时做同样的事情。谁能详细说明一下
以下是来自QT官方文档的声明
"这个函数是为了兼容 STL 而提供的。它相当于 append(value) "
这通常用于期望标准容器作为其模板参数的方法模板也可以与 a 一起使用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>
和 aQList<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++ 程序员熟悉的方法。因此,他们在调用该方法时为模板参数兼容性提供了一个额外的方法。