c++ - 在 C++ 中创建一个具有初始容量的列表

标签 c++ list stl containers

我正在创建一个模板类,其中包含一个列表对象作为私有(private)成员:

 .
 .
 .
 private:

list<E> listObject;

 };

第一个构造函数必须创建一个容量为 10 的列表对象。你会怎么做?

 template<class T, class E>
 Queue<T,E>::Queue()
 {
listObject.resize(10); 

 }

 template<class T, class E>
 Queue<T,E>::Queue()
 {
listObject = new list<E>(10); 

 }

或任何其他想法?

最佳答案

最惯用的选项是初始化所需大小的列表。这是在构造函数初始化列表中完成的:

Queue<T,E>::Queue() : listObject(10) 
{
  ....
}

这将为您留下 10 个默认构造对象的列表(您是否真的需要它是另一回事)。

请注意,在 C++11 中,您可以在声明时初始化数据成员。所以你也可以这样做:

template <typename T, typename E> Queue
{
  ....
  list<E> listObject = list<E>{10};
};

更多关于 std::list here .

关于c++ - 在 C++ 中创建一个具有初始容量的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762755/

相关文章:

python - 如何分别传播字符串列表?

C++ STL - 为什么使用 !(w < *i) 而不是 (w==*i)

c++ - 如何判断一个字符串是否包含另一个字符串

c++ - C++ 中嵌套 for 循环的一行代码

c++ - 基类的静态成员函数可以调用派生类对象吗? (C++)

c++ - 无法编译 boost::asio::basic_datagram_socket<boost::asio::ip::udp>::basic_datagram_socket()

python - 如果某个键的值不止一次,则从列表中删除该元素

c++ - 在控制台应用程序中使用 ocx

python - python 中的条件配对列表项

c++ - 如何找到 key 大于 val 的映射的第一个元素