读书人

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

发布时间: 2012-02-14 19:19:19 作者: rapoo

怎样把交集的结果放到目的变量?
有三个变量
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 < < " ";

读书人网 >C++

热点推荐