我想知道如何初始化std::vector
字符串,而不必在 Visual Studio Ultimate 2012 中使用一堆push_back
。
我已尝试vector<string> test = {"hello", "world"}
,但这给了我以下错误:
Error: initialization with '{...}' is not allowed for an object of type "std::vector<std::string, std::allocator<std::string>>
答案 0 :(得分:8)
问题
如果您想使用代码段中的内容,则必须升级到更新的编译器版本(以及标准库实现)。
VS2012 doesn't support std::initializer_list
,这意味着您尝试使用的std::vector
构造函数之间的重载根本不存在。
换句话说;该示例无法使用 VS2012 进行编译。
潜在的解决方法
使用中间数组来存储std::string
,并使用它来初始化向量。
std::string const init_data[] = {
"hello", "world"
};
std::vector<std::string> test (std::begin (init_data), std::end (init_data));
答案 1 :(得分:0)
1。为什么我会收到错误消息? 根据此2012 November update,Visual Studio 2012不支持在question之前进行列表初始化。
2。关于如何存储字符串的任何想法?
使用push_back()是完全有效的解决方案。示例:
#include<vector>
#include <string>
using namespace std;
int main()
{
vector<string> test;
test.push_back("hello");
test.push_back("world");
for(int i=0; i<test.size(); i++)
cout<<test[i]<<endl;
return 0;
}