为什么QT的QList方法与std :: list兼容

时间:2013-08-01 09:20:02

标签: c++ qt compatibility std

使用void QList::push_back ( const T & value )

等方法的原因是什么 在QT中它与append()做同样的事情

文档的含义是什么样的兼容性。任何人都可以详细说明这个

以下是QT官方documentation的声明

此功能是为STL兼容性而提供的。它相当于追加(值)

4 个答案:

答案 0 :(得分:7)

这通常用于使期望标准容器作为模板参数的方法模板也可以与QList一起使用,因为它们将共享相同的方法。

例如:

template<typename Container>
void move_elements(Container &to, const std::vector<int> &from)
{
  for (auto elem : from)
    to.push_back(elem);
}

可以使用std::list<int>QList<int>作为to参数进行调用。

答案 1 :(得分:4)

它是为了兼容性,所以你可以发送QList 的算法 在标准容器上操作。我认为这是主要的好处,因此您可以使用<algorithm>中的所有操作。我举一个来自find_if的{​​{1}}的例子:

<algorithm>

我的childItems_声明为:

bool hasChildChecked(){
      return std::find_if(childItems_.begin(), 
                          childItems_.end(),checked()) != childItems_.end();
      }

这种兼容性确实可以节省我的时间并使编码更容易。

答案 2 :(得分:1)

你可能遇到这种情况:

template <
    template <
        typename ValueType,
        typename Allocator
    > class Container
> class garbage_collector
{
    /* some implementation */
};

因为QList与STL容器具有相同的方法名称,所以可以在此上下文中使用它。

答案 3 :(得分:0)

C ++的STL(标准模板库)对列表和向量使用函数push_back(),因此对于大多数C ++程序员来说,这是一种熟悉的方法。因此,他们在调用方法时为模板参数兼容性提供了额外的方法。