矢量无法由{}初始化

时间:2013-05-24 02:42:56

标签: c++ vector

您好我是C ++的新手,我无法使用{}初始化矢量,即使代码是用书复制的。例如,当我这样做时

vector <string> articles {"a", "an", "the"};

vector <string> articles = {"a", "an", "the"};

我分别收到了这些错误消息:

Error: expected a ";"

Error: initialization with "{...}" is not allowed for object of type "std::vector<std::string, std::allocator<std::string>>"

有人帮帮我吗?我认为这应该是一个我无法找到的简单错误。

1 个答案:

答案 0 :(得分:2)

自C ++ 11以来引入了

uniform initialization,您应该使用支持这一新功能的最新编译器。

如果您的编译器不支持此功能,您可以尝试以下操作:

string arrOfString[3] =  {"a", "an", "the"};
vector<string> articles(arrOfString, arrOfString +3);

修改

使用MSVC11,你可以做到(由@chris提供):

string arrOfString[3] =  {"a", "an", "the"};
vector<string> articles(std::begin(arrOfString), std::end(arrOfString));