gpt4 book ai didi

C++ vector 调整大小元素重新排序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:25 27 4
gpt4 key购买 nike

如果我的 vector 以其中的一些信息开头,例如:

vector<int> ordered_set;
ordered_set.resize(5);
for (int counter=0; counter<5; counter++){
ordered_set[counter]=counter+1;
}

然后我将其大小调整为:

ordered_set.resize(10,0);

通过指针运算 ordered_set[0,1,2..4] 是否仍能保证 1 到 5 是前五个元素?或者如果没有找到用于调整大小的连续内存并且需要重新分配,标准是否允许内容置换?换句话说,ordered_set[0,1,2..4] 可能会遇到 0 吗?

最佳答案

std::vector 被定义为元素的连续容器。如果 vector 的分配器在调整大小时无法提供足够的内存,则 vector 不会“破裂”。它无法保持其不变性,因此由于抛出异常,操作根本无法完成。

至于指针算法,您可以确定在调整大小后遍历 vector 将产生与您之前放置在那里的相同的整数值。但请务必不要使用您在调整大小之前获得的任何指针或迭代器,因为它们会变得无效。

关于C++ vector 调整大小元素重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com