是否可以在一行中创建一个std :: list,指定其值(c ++)?

时间:2013-04-04 11:00:26

标签: c++ list stdlist

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

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

我找不到简单地使用std::list(我对c++ reference's examples不满意)的方法,我错过了什么吗?如果标准列表无法实现,是否有原因?那么实现它的最简单方法是什么?

提前致谢。

5 个答案:

答案 0 :(得分:6)

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

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

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

#include <boost/assign/list_of.hpp>

std::list<std::string> t = boost::assign::list_of("cat")("dog");

答案 1 :(得分: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" };

答案 2 :(得分:2)

在c ++ 11中你可以写

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

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

否则c ++中没有可能。

答案 3 :(得分: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");

答案 4 :(得分:0)

在C ++ 11中,您可以使用uniform initialization

执行此操作
std::list<std::string> myList{"Cat", "Dog", "Pig"};