gpt4 book ai didi

c++ - 将一个 vector 插入到另一个 vector 的某个位置

转载 作者:行者123 更新时间:2023-12-02 13:29:57 82 4
gpt4 key购买 nike

我想将 vector b插入 vector a中的某个位置。例如

std::vector <int> vecta{ 10, 20, 30 ,40 , 50};
std::vector <int> vectb{ 1000, 2000, 3000 };

如何才能得到像 {10,20,1000,2000,3000,40,50} 这样的结果 vector ?我想删除 30 并将其替换为 vector 。

最佳答案

I want to insert vector b in a certain position in a vector a

您可能需要考虑std::vector::insert() :

vecta.insert(pos, vectb.begin(), vectb.end());

其中上面的 pos 是一个迭代器,指向 vectb 内容之前的元素(在 vecta 中)将被插入。 pos 也可能是 end() 返回的迭代器,这意味着将 vectb 的内容附加vecta.

<小时/>

How can I have a result vector to be like {10,20,1000,2000,3000,40,50}

为此,您还需要从 vecta 中删除元素 30。您可以使用std::vector::erase()来做到这一点:

auto main() -> int {
std::vector <int> vecta{ 10, 20, 30, 40 , 50};
/* ^
|-- insert vectb here and replace the 30
*/

std::vector <int> vectb{ 1000, 2000, 3000 };

// what element to erase from vecta?
auto pos = vecta.begin() + 2;

// erase it
pos = vecta.erase(pos);

// insert vectb in vecta
vecta.insert(pos, vectb.begin(), vectb.end());

for (auto& e: vecta)
std::cout << e << " ";
std::cout << std::endl;
}

std::vector::erase() 返回被删除元素后面的迭代器。由于您想从 vecta 中删除 30,然后在该位置插入 vectb,因此您只需传递迭代器 erase() 返回到 insert()

关于c++ - 将一个 vector 插入到另一个 vector 的某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138069/

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