【问题标题】:C++ instantiating std::vector<std::string> with fixed number of empty stringsC++ 用固定数量的空字符串实例化 std::vector<std::string>
【发布时间】:2013-07-20 20:02:02
【问题描述】:

我正在开发一个用于构建记录的类(具有固定数量的字段)。我的公共方法允许用户按索引插入单个值。没有要求用户填写 all 字段——所以我想将表示记录的向量预分配到确切的大小,每个字段都初始化为空字符串。

有没有比回推循环更容易做到这一点的方法?

【问题讨论】:

  • 阅读 std::vector 的文档并寻找构造函数!

标签: c++ vector initialization default


【解决方案1】:

类似这样的:

std::vector<std::string> v(N);

其中N 是字符串的数量。这将创建一个带有 N 空字符串的向量。

【讨论】:

    【解决方案2】:

    您只需要选择向量类的标准构造函数之一,即在输入中接收您想要的元素数量的构造函数(使用默认构造函数生成,对于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

    【讨论】:

      【解决方案3】:
      std::vector<std::string> v(N);
      

      会做的。

      【讨论】:

      • 第二个版本比第一个版本更高效?
      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2011-05-26
      • 1970-01-01
      • 2011-06-04
      相关资源
      最近更新 更多