矢量调整奇怪行为的大小
vector resize strange behavior
本文关键字:调整 更新时间:2023-10-16
我有以下代码。有趣的是,如果我取消对 vector 的 resize() 的注释,它将为输入值 5 提供 10 个数字。我在 Windows xp 上使用带有 mingw 和 gcc 的 eclipse。迭代器不应该只针对 5 个元素吗?
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
//#include "stdio.h"
using namespace std;
template <typename T>
void print_coll(T t)
{
typename T::iterator iter = t.begin();
while (iter != t.end() )
{
cout << *iter << " ";
++iter;
}
cout << endl;
}
int main()
{
int size;
cin >> size;
vector<int> numbers;
// numbers.resize(size);
for ( int i = 0 ; i < size; ++i ) {
int r = (rand() % 10);
numbers.push_back(r);
}
print_coll(numbers);
}
resize
调整矢量的大小,为需要为新大小创建的每个项目插入默认值。你想要reserve
.
numbers.resize(size);
这会将size
0 添加到向量中。
for ( int i = 0 ; i < size; ++i ) {
int r = (rand() % 10);
numbers.push_back(r);
}
这会向向量添加size
随机值。
可能你想要reserve
而不是resize
. reserve
不会更改矢量的"可见"大小,它只会更改矢量使用的存储的内部大小,resize
更改"可见"大小。
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何按另一个向量的方向调整一个向量?
- 使用大小调整大小调整 wxListView 的大小
- 调整大小和复制哈希表数组中的元素
- 具有调整对齐方式的类型定义