我通常使用以下代码从std::cin
中填充一个std::vector<struct_name>
:
struct point{
int x, y;
};
int main()
{
std::size_t n;
std::cin>>n;
std::vector<point> vec(n);
for (auto& p:vec)
std::cin>>p.x>>p.y;
//...
}
但是今天我发现另一种使用默认构造函数的方式:
struct point{
int x, y;
point(){
std::cin>>x>>y;
}
};
int main()
{
std::size_t n;
std::cin>>n;
std::vector<point> vec(n);
//...
}
问题:
- 向量元素的初始化顺序是否由标准保证(0、1、2、n-1...)?
- (如果上一个问题的答案是正确的)真的第二种变体有效吗?
我对C++11(及更新版本)标准下的行为感兴趣