以下示例来自Wikipedia.
int arr[4] = {0, 1, 2, 3};
int* p = arr + 5; // undefined behavior
Run Code Online (Sandbox Code Playgroud)
如果我从不取消引用p,那么为什么arr + 5单独的未定义行为?我希望指针表现为整数 - 除了取消引用时,指针的值被视为内存地址.
我有一些使用数千个向量的代码,每个向量只有4个条目,所以我想将每个向量的初始大小设置为4,这样我就可以通过不保留未使用的内存来优化内存使用.
我试过保留方法:
vector<Foo> bar;
bar.reserve(10);
Run Code Online (Sandbox Code Playgroud)
但似乎它扩展并且不缩小,似乎也没有构造函数创建具有指定容量的向量.
还有2个奖励问题:
什么是默认初始容量
我可以创建具有特定容量的向量吗?
我有一个std::vector在我称之为reserve一个较大的值.然后我检索data().
由于迭代data然后崩溃,我想知道这是否是允许的.被reserve强制更新data已分配内存的范围是多少?