如何将两个vector中的值整合到另一个vector中?

时间:2021-11-11 19:57:41
vecB和vecA中有相同的struct个数,现在想将每个vecA中的每个a的值传给vecC中c1,每个vecB中的每个b的值传给vecC中c2,
也就是将两个容器中的内容整合到新的容器中,很棘手,请问各位前辈,应该如何写啊

struct A
{
    int a;
};
vector<A> vecA;
struct B
{
    int b;
};
vector<B> vecB;
struct C
{
    int c1;
    int c2;
};
vector<C> vecC;

6 个解决方案

#1


STL容器可以直接进行赋值操作

#2


自己写方法封装
而且感觉用map比较好

#3


其实vector 是支持内存拷贝的,用下表就可以访问。

如果想一个一个拷贝,就用迭代器吧。

#4


用functor,自己封装一个二元函数操作符,然后用for_each调用即可。STL中尽量避免手写循环,否则很难保证程序逻辑性。

#5




C fun(A a,B b)
{
C tmp;
tmp.c1 = a.a;
tmp.c2 = b.b;
return tmp;
};

int main()
{
std::vector<A> vecA(10);
std::vector<B> vecB(10);//元素个数都是10;
std::vector<C> vecC;
vecC.resize(10);
std::transform(vecA.begin(),vecA.end(),vecB.begin(),vecC.begin(),fun);
system("pause");
    return 0;
}



你的意思是这样吗?

#6


std::merge
http://www.cplusplus.com/reference/algorithm/merge/

#1


STL容器可以直接进行赋值操作

#2


自己写方法封装
而且感觉用map比较好

#3


其实vector 是支持内存拷贝的,用下表就可以访问。

如果想一个一个拷贝,就用迭代器吧。

#4


用functor,自己封装一个二元函数操作符,然后用for_each调用即可。STL中尽量避免手写循环,否则很难保证程序逻辑性。

#5




C fun(A a,B b)
{
C tmp;
tmp.c1 = a.a;
tmp.c2 = b.b;
return tmp;
};

int main()
{
std::vector<A> vecA(10);
std::vector<B> vecB(10);//元素个数都是10;
std::vector<C> vecC;
vecC.resize(10);
std::transform(vecA.begin(),vecA.end(),vecB.begin(),vecC.begin(),fun);
system("pause");
    return 0;
}



你的意思是这样吗?

#6


std::merge
http://www.cplusplus.com/reference/algorithm/merge/