也就是将两个容器中的内容整合到新的容器中,很棘手,请问各位前辈,应该如何写啊
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比较好
而且感觉用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/
http://www.cplusplus.com/reference/algorithm/merge/
#1
STL容器可以直接进行赋值操作
#2
自己写方法封装
而且感觉用map比较好
而且感觉用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/
http://www.cplusplus.com/reference/algorithm/merge/