好的,我有一个结构(下面),我想把它的所有成员初始化为false。我还想要一个大小向量stalls的结构barn。换句话说,我希望以向量为容器的对象结构stalls副本barn,并初始化其成员。
struct barn {
bool cow, board;
};我一直在使用下面的代码来这样做(很糟糕的做法):
vector<barn> barn_info;
for (int i = 0; i != stalls; ++i) {
barn x; x.cow = false; x.board = false;
barn_info.push_back(x);
}发布于 2014-06-05 00:37:32
有多种方法可以做到这一点,其中大多数都涉及C++11:
如果(而且只有在)您使用的是C++11,则可以
struct barn {
bool cow = false;
bool board = false;
}
vector<barn> barn_info(stalls);请注意,这与在构造器上初始化它们不一起工作。有关它们的更多信息,请参见此链接。
如果您不想为一个结构创建一个构造函数,并且不像上面那样初始化它的字段,那么您可以使用如下内容:
vector<barn> barn_info(stalls, {false, false}){}部分也在上面的链接中描述。您可以看到初始化std::vector 这里的更多方法。
您可以使用.assign()方法的std::vector,如下所示:
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,可以将其缩短如下:
barn_info.assign(stalls, {false, false});发布于 2014-06-05 00:11:10
struct barn {
bool cow, board;
barn():cow(false),board(false){}
};
vector<barn> barn_info(n);发布于 2014-06-05 00:15:02
直接使用向量构造函数:
barn b {false, false; };
std::vector<barn> barn_info (stalls, b);https://stackoverflow.com/questions/24049617
复制相似问题