gpt4 book ai didi

C++ - 插入 Vector - 在迭代器之后还是之前?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:36 24 4
gpt4 key购买 nike

上下文是:未知大小的数据集,它不断迭代,但在初始化后插入最少(初始化速度不是问题)。

插入 vector 后元素位置困惑:

如果我们在 vector 为空时在 vector.begin() 处插入,它会在地址 .begin() 处创建一个元素。

如果我们在 vector 不为空时在 vector.begin() 处插入,它会将 .begin() 处的现有元素向前移动一个,还是将新元素放在 .begin() 之后?

类似地,如果在插入新元素之前遍历 vector 并匹配 vector 元素中的特定条件,如果我们插入如下:vector.insert(迭代器, new_element)

它是在当前迭代元素之后还是之前插入元素?提前致谢。中号

最佳答案

std::vector::insert() 上引用 cppreference :

inserts value before the location pointed to by [iterator].

我们需要一个单一的语法来插入每个可能的位置(开始、结束、这两者之间的某处):

std::vector<int> v;                                     // {         }
v.insert(std::begin(v), 2); // { 2 }
v.insert(std::find(std::begin(v), std::end(v), 2), 1); // { 1, 2 }
v.insert(std::end(v), 3); // { 1, 2, 3 }

容器的end 指针是最后一个元素之后 的点,我们不能插入超过该点,所以我们插入之前。

此外,当容器为空时,std::begin(container) == std::end(container)true,因此 insert(std::begin(container), value) 将起作用。

关于C++ - 插入 Vector - 在迭代器之后还是之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038119/

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