int a[10]; int b[10] = {1,1,2,2,3,3,4,4,5,5}; for(int i=0;i<10;i++){ a[i] = b[i]; }
但是需要数组a里面的元素不重复也就是说当b的第二个元素插入的时候需要判断一个b[1]是否已经在a里面了 这个判断怎么写啊 记得有一个是否包含的判断的 具体怎么整啊
业精于勤,荒于嬉;行成于思,毁于随。
你可以用std::find,比如这样
std::find
vector<int> a(10); vector<int> b = {1,1,2,2,3,3,4,4,5,5}; for(auto i : b) { auto res = std::find(a.begin(), a.end(), i); if(res == a.end()) a.push_back(i); }
std::set<int> 用数组的话就自己每次插入去遍历是否已经存在元素。
std::set<int>
b可以排序
b是有序的判断前一个元素是否等于当前要插入的元素即可
if ( a的最后一个元素 != 当前要插入的元素) { 插入到a的最后 }
b是无序的可以排序然后执行上面的算法
b不可以排序且无序
a和b顺序不必一致 用特殊的手段(比如堆建立的过程)一次性插入到a
a、b顺序一致 只能插入之前查找是否要相同元素或者 使用 辅助数据结构记录已经插入的元素
当然可以利用现成的stl中的set或者其他的如位数组之类的东西,当然如果是学习的话还是老老实现一次比较好
stl
你可以用
std::find
,比如这样std::set<int>
用数组的话就自己每次插入去遍历是否已经存在元素。
b可以排序
b是有序的
判断前一个元素是否等于当前要插入的元素即可
b是无序的
可以排序然后执行上面的算法
b不可以排序且无序
a和b顺序不必一致
用特殊的手段(比如堆建立的过程)一次性插入到a
a、b顺序一致
只能插入之前查找是否要相同元素或者 使用 辅助数据结构记录已经插入的元素
当然可以利用现成的
stl
中的set或者其他的如位数组之类的东西,当然如果是学习的话还是老老实现一次比较好