【发布时间】:2013-07-20 20:02:02
【问题描述】:
我正在开发一个用于构建记录的类(具有固定数量的字段)。我的公共方法允许用户按索引插入单个值。没有要求用户填写 all 字段——所以我想将表示记录的向量预分配到确切的大小,每个字段都初始化为空字符串。
有没有比回推循环更容易做到这一点的方法?
【问题讨论】:
-
阅读 std::vector 的文档并寻找构造函数!
标签: c++ vector initialization default
我正在开发一个用于构建记录的类(具有固定数量的字段)。我的公共方法允许用户按索引插入单个值。没有要求用户填写 all 字段——所以我想将表示记录的向量预分配到确切的大小,每个字段都初始化为空字符串。
有没有比回推循环更容易做到这一点的方法?
【问题讨论】:
标签: c++ vector initialization default
类似这样的:
std::vector<std::string> v(N);
其中N 是字符串的数量。这将创建一个带有 N 空字符串的向量。
【讨论】:
您只需要选择向量类的标准构造函数之一,即在输入中接收您想要的元素数量的构造函数(使用默认构造函数生成,对于std::string,它将是一个空字符串)从一开始就放入你的向量。
int N = 10;
std::vector<std::string> myStrings(N);
您还可以将所有字符串初始化为与空字符串不同的值,例如:
int N = 10;
std::vector<std::string> myStrings(N,std::string("UNINITIALIZED") );
文档: http://www.cplusplus.com/reference/vector/vector/vector/
您可能也有兴趣阅读以下内容:Initializing an object to all zeroes
【讨论】:
std::vector<std::string> v(N);
会做的。
【讨论】: