gpt4 book ai didi

c++ - 如何将 vector 插入到特定位置的另一个 vector 中,这样我将同时获得这两个 vector 的大 vector ,并且该位置将被覆盖?

转载 作者:行者123 更新时间:2023-12-01 15:13:14 27 4
gpt4 key购买 nike

对于练习,我真的需要知道如何将一个 vector 插入另一个 vector 。

这是我需要的一个例子:

//let's say i have these 2 vecs: 
vec1 = { 18, 192, 34};
vec2 = { 171, 11, 50, 6};

我选择将它们连接的点,假设我选择vec 1
像这样在 vector 2的2位置:
result_vec = { 171, vec1, 50, 6};

所以我完成后实际上会得到的是:
result_vec = { 171, 18, 192, 34, 50, 6};

对我来说,最好看两个示例,一个简单的示例,以及另一个带有智能指针(例如shared_ptr或unique_ptr)的示例。

谢谢!

最佳答案

似乎您想用一个 vector 的一个元素替换另一个 vector 的元素。如果是这样,那么您可以编写类似于演示程序中所示功能的函数。

#include <iostream>
#include <vector>
#include <iterator>

template <typename T>
std::vector<T> & replace( std::vector<T> &v1,
typename std::vector<T>::size_type pos,
const std::vector<T> &v2 )
{
if ( not ( pos < v1.size() ) )
{
v1.insert( std::end( v1 ), std::begin( v2 ), std::end( v2 ) );
}
else
{
v1.insert( v1.erase( std::next( v1.begin(), pos ) ),
std::begin( v2 ), std::end( v2 ) );
}

return v1;
}

int main()
{
std::vector<int> v1 = { 171, 11, 50, 6 };
std::vector<int> v2 = { 18, 192, 34 };

for ( const auto &item : replace( v1, 1, v2 ) ) std::cout << item << ' ';
std::cout << '\n';

return 0;
}

程序输出为
171 18 192 34 50 6 

关于c++ - 如何将 vector 插入到特定位置的另一个 vector 中,这样我将同时获得这两个 vector 的大 vector ,并且该位置将被覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61269899/

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