2

我想std::list通过指定它的值来创建一个,我想在一行中完成它,例如:

std::list<std::string> myList("Cat", "Dog", "Pig"); // doesn't compile

我找不到简单的方法来做到这一点(我对c++ 参考的示例std::list不满意),我错过了什么吗?如果标准列表不可能,有什么原因吗?那么实现它的最简单方法是什么?

提前致谢。

4

5 回答 5

7

在 C++11 中,您可以使用初始化程序:

std::list<std::string> t { "cat", "dog" };

在 C++03boost::assign::list_of中可用:

#include <boost/assign/list_of.hpp>

std::list<std::string> t = boost::assign::list_of("cat")("dog");
于 2013-04-04T11:02:07.847 回答
6

使用Boost.Assign

#include <boost/assign/list_of.hpp>     
std::list<std::string> test = boost::assign::list_of("abc")("def");

中使用初始化器

std::list<std::string> test { "abc", "def" };
于 2013-04-04T11:04:24.757 回答
2

在 c++11 中你可以写

std::list<std::string> foo = { "bar", "meh", "bah" };

你需要一个最新的编译器。(即 gcc 4.8)

否则在 c++ 中是不可能的。

于 2013-04-04T11:02:05.250 回答
1
std::list<std::string> myList { "Cat", "Dog", "Pig"};

仅限 C++11。对于较旧的 C++,请参阅Boost.Assign

using boost::asign::list_of;

std::list<std::string> myList = list_of("Cat")("Dog")("Pig");
于 2013-04-04T11:02:21.857 回答
0

在 C++11 中,您可以使用统一初始化来执行此操作:

std::list<std::string> myList{"Cat", "Dog", "Pig"};
于 2013-04-04T11:02:29.160 回答