<string> 堆上的矢量,使用初始值设定项列表?

vector<string> on heap, using an initializer list?

本文关键字:列表 gt string lt      更新时间:2023-10-16

我能找到的所有使用初始化器列表外观填充向量的例子似乎都在堆栈上创建向量:

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

您想要使用其中一个:

  1. std::vector<std::string>* v = new std::vector<std::string>({"1","2","3"});
  2. std::vector<std::string>* v = new std::vector<std::string>{"1","2","3"};