我可以找到使用初始化列表填充向量的所有示例看起来都是在堆栈上创建向量:
vector<string> v = {"1","2","3"}
我想实现类似的目标:
vector<string>* v = new vector<string>(){"1","2","3"};
但是我遇到了编译错误。是否可以使用初始化列表在堆上声明向量?
答案 0 :(得分:3)
您需要删除括号:
vector<string>* v = new vector<string>{"1","2","3"};
Demo on ideone。请注意,这在C ++ 11之前不起作用。
另请注意,虽然示例中的向量是在堆栈上创建的,但它的内容仍然在堆上创建。如果您希望将内容存储在堆栈中,并且在编译时已知内容的大小,请使用std::array
而不是std::vector
。
答案 1 :(得分:1)
您想使用其中一种:
std::vector<std::string>* v = new std::vector<std::string>({"1","2","3"});
std::vector<std::string>* v = new std::vector<std::string>{"1","2","3"};