c++ - 为什么 push_back 函数不将值插入到具有定义大小的向量中
问题描述
我刚开始学习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()
by 1
)并增加i
by 来完成它的工作1
。因此,第二次迭代期间的比较结果为1 < 6
。
然后,它以类似的方式继续向无穷大(或直到你杀死它)。
推荐阅读
- django - Django:让所有模型用户依赖?
- swift - 速率限制 CoreBluetooth 写入而不响应
- c# - 如何在 datagrid asp.net 的更新命令中包含会话变量
- excel - Excel VBA:如何保存应用于 ListObject 的过滤器以供以后重新使用
- android - 带有 MapBox 的 Xamarin.Android:XA4212 编译失败
- javascript - 反应 UseState 真/假
- c++ - 排列数组元素的最快方法
- php - htaccess重写子目录中的get参数并用php检索
- mysql - 如何将最后一个表加入这个三重连接?
- terraform - Fargate container_definition 字段“secretOptions”未将 datadog API_KEY 传递给 logConfiguration