首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化用户定义的数据类型向量的简明方法

初始化用户定义的数据类型向量的简明方法
EN

Stack Overflow用户
提问于 2014-06-05 00:08:18
回答 3查看 147关注 0票数 0

好的,我有一个结构(下面),我想把它的所有成员初始化为false。我还想要一个大小向量stalls的结构barn。换句话说,我希望以向量为容器的对象结构stalls副本barn,并初始化其成员。

代码语言:javascript
复制
struct barn {
    bool cow, board;
};

我一直在使用下面的代码来这样做(很糟糕的做法):

代码语言:javascript
复制
vector<barn> barn_info;
for (int i = 0; i != stalls; ++i) {
    barn x; x.cow = false; x.board = false;
    barn_info.push_back(x);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-05 00:37:32

有多种方法可以做到这一点,其中大多数都涉及C++11:

如果(而且只有在)您使用的是C++11,则可以

代码语言:javascript
复制
struct barn {
  bool cow = false;
  bool board = false;
}

vector<barn> barn_info(stalls);

请注意,这与在构造器上初始化它们不一起工作。有关它们的更多信息,请参见此链接

如果您不想为一个结构创建一个构造函数,并且不像上面那样初始化它的字段,那么您可以使用如下内容:

代码语言:javascript
复制
vector<barn> barn_info(stalls, {false, false})

{}部分也在上面的链接中描述。您可以看到初始化std::vector 这里的更多方法。

您可以使用.assign()方法的std::vector,如下所示:

代码语言:javascript
复制
std::vector<barn> barn_info;
barn b; b.cow = false; b.board = false;
barn_info.assign(stalls, b); // assign 'stalls' positions the 'b' value

即使不使用C++11,也可以这样做。如果使用C++11,可以将其缩短如下:

代码语言:javascript
复制
barn_info.assign(stalls, {false, false});
票数 2
EN

Stack Overflow用户

发布于 2014-06-05 00:11:10

代码语言:javascript
复制
struct barn {
    bool cow, board;

    barn():cow(false),board(false){}
};

vector<barn> barn_info(n);
票数 1
EN

Stack Overflow用户

发布于 2014-06-05 00:15:02

直接使用向量构造函数:

代码语言:javascript
复制
barn b {false, false; };

std::vector<barn> barn_info (stalls, b);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24049617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档