首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎样把交集的结果放到目的变量?该怎么处理

2012-02-14 
怎样把交集的结果放到目的变量?有三个变量vector intgroup1vector intgroup2vector intdest怎样

怎样把交集的结果放到目的变量?
有三个变量
vector <int>   group1;
vector <int>   group2;
vector <int>   dest;

怎样把group1   和group2   的交集结果放到dest里呢?

下面是我写的代码,请指出错误的地方


void   main()
{  
vector <int>   group1;
vector <int>   group2;
vector <int>   dest;

//   initialize   group1
group1.push_back(   3   );
group1.push_back(   2   );
group1.push_back(   7   );
group1.push_back(   9   );
group1.push_back(   6   );
group1.push_back(   38   );
group1.push_back(   4   );
group1.push_back(   4   );
group1.push_back(   23   );
group1.push_back(   7   );

        //   initialize   group2
group2.push_back(   3   );
group2.push_back(   3   );
group2.push_back(   7   );
group2.push_back(   43   );
group2.push_back(   44   );
group2.push_back(   23   );
group2.push_back(   34   );
group2.push_back(   32   );
group2.push_back(   35   );
group2.push_back(   38   );

//   sort
sort(   group1.begin(),   group1.end()   );
sort(   group2.begin(),   group2.end()   );
       
        //   itersection   between   group1   and   group2

vector <int> ::iterator   iter_dest   =   dest.begin();
cout   < <   "set_intersection(): ";
set_intersection   (   group1.begin(),   group1.end(),   group2.begin(),                 group2.end(),dest.begin()   );

for   (   vector <int> ::iterator   iter_dest   =   dest.begin();  
       iter_dest   !=   dest.end();++iter_dest   )
cout   < <   *iter_dest;
}

[解决办法]
set_intersection ( group1.begin(), group1.end(), group2.begin(),               group2.end(),dest.begin() );

dest此时还是空的,dest.begin()迭代器肯定无效的
[解决办法]
声明dest的时候用一个容量来构造它
vector <int> dest(10);
[解决办法]
// itersection between group1 and group2

dest.resize(max(group1.size(), group2.size()));
vector <int> ::iterator iter_dest = dest.begin();
cout < < "set_intersection(): ";

vector <int> ::iterator end =
set_intersection ( group1.begin(), group1.end(), group2.begin(),group2.end(),dest.begin() );
for ( vector <int> ::iterator iter_dest = dest.begin(); iter_dest != end; ++iter_dest )
cout < < *iter_dest < < " ";

热点排行