我能找到的所有使用初始化列表填充向量的示例看起来似乎都是在堆栈上创建一个向量:
vector<string> v = {"1","2","3"}
我想实现类似:
vector<string>* v = new vector<string>(){"1","2","3"};
但我得到编译器错误。是否可以使用初始化列表在堆上声明一个向量?
您需要删除括号:
vector<string>* v = new vector<string>{"1","2","3"};
ideone 上的演示。请注意,这在 C++11 之前不起作用。
另请注意,尽管您的示例中的向量是在堆栈上创建的,但它的内容仍然是在堆上创建的。如果您希望将内容也存储在堆栈中,并且在编译时知道内容的大小,请std::array
使用std::vector
.
您想使用其中之一:
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"};