为什么push_back函数不会将值插入到具有定义大小的向量中
why won't push_back function insert values into vector with defined size
我刚开始学习C++。所以,我无法弄清楚为什么向量成员函数不将值插入向量。
int main (){
vector<char> v(5);
char x = 'a';
for (int i = 0; i < v.size(); ++i) {
v.push_back(x);
++x;
}
for (int i = 0; i < v.size(); ++i)
cout << v[i];
keep_window_open();
return 0;
}
我无法弄清楚为什么向量成员函数不将值插入向量
它确实在事实中插入了值。执行,只是没有达到vector
内容的打印,因为循环:
for (int i = 0; i < v.size(); ++i) {
v.push_back(x);
++x;
}
是无限的。
在第一次迭代之前v.size()
返回5
(因为这是元素的数量,所以向量是用来构造的(,因此第一次迭代期间的i < v.size()
计算结果为0 < 5
。
然后,循环通过将元素插入向量(在此过程中增加v.size()
1
(并将i
增加1
来执行其操作。因此,第二次迭代期间的比较计算结果为1 < 6
。
然后,它以类似的方式继续走向无穷大(或者直到你杀死它(。
@juanchopanza">
即使是这样,UB仍然可以给你留下一个无限循环。如果一个程序在任何地方都有UB,则整个程序都是无效的,任何行为都是可以的。 做你想要的,无限循环,崩溃,格式化你的硬盘。所有这些都是调用 UB 的程序的正常结果。
相关文章:
- 自己的自定义向量类. 内存重新分配
- C++类中的类作为自定义向量(如何初始化?
- 在C++中使用带有自定义向量的迭代器
- 创建自定义向量类错误
- 如何在<typename> <long> 不更改给定代码的情况下将自定义向量与 STL 向量相互转换?
- 如何为我的自定义向量类实现类似 vector.insert 的方法
- 如何在没有参数列表的情况下定义向量无效使用模板名称 std::vector
- 将 boost odeint 与 std::map 和自定义向量空间代数一起使用时,没有可行的重载'='
- Push_back类定义向量的函数
- 自定义向量类的解构函数
- c++在单独的函数中定义向量
- 定义向量元素的破坏顺序是否合理
- vector.erase 和 std::remove 在自定义向量上
- 在自定义类中定义向量
- C++11 initializer_list构造函数,带有自定义向量类的头和cpp文件
- 如何在<ifstream> C++ 类中定义向量
- 为自定义向量类中的特定元素指定一个值.作为a[5]=3 C++
- 重载自定义向量类中的和运算符
- 如何在C++中定义向量<boost::mutex>?
- 在自定义向量类中调用了错误的构造函数