33,311
社区成员
发帖
与我相关
我的任务
分享
template <class _InputIter1, class _InputIter2, class _OutputIter>
_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
_InputIter2 __first2, _InputIter2 __last2,
_OutputIter __result) {
__STL_REQUIRES(_InputIter1, _InputIterator);
__STL_REQUIRES(_InputIter2, _InputIterator);
__STL_REQUIRES(_OutputIter, _OutputIterator);
__STL_REQUIRES_SAME_TYPE(
typename iterator_traits<_InputIter1>::value_type,
typename iterator_traits<_InputIter2>::value_type);
__STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,
_LessThanComparable);
while (__first1 != __last1 && __first2 != __last2)
if (*__first1 < *__first2)
++__first1;
else if (*__first2 < *__first1)
++__first2;
else {
*__result = *__first1;
++__first1;
++__first2;
++__result;
}
return __result;
}
//测试环境vs2003
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;
void initVectorInt(vector<int>& aVector, int seed);
void makeVector(const vector<int>& aVectorA,
const vector<int>& aVectorB,
vector<int>& aVectorC);
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vectorA;
vector<int> vectorB;
vector<int> vectorC;
initVectorInt(vectorA, 50);
initVectorInt(vectorB, 100);
makeVector(vectorA, vectorB,vectorC);
for(int i = 0; i < vectorA.size(); i++)
{
cout << "vectorA[ " << setw( 3 ) << i << " ] = " << vectorA[i] << endl;
}
cout << "====================" << endl;
for(int i = 0; i <vectorB.size(); i++)
{
cout << "vectorB[ " << setw( 3 ) <<i << " ] = " << vectorB[ i ] << endl;
}
cout << "====================" << endl;
if(vectorC.size() > 0)
for(int i = 0; i <vectorC.size(); i++)
{
cout << "vectorC[ " << setw( 3 ) <<i << " ] = " << vectorC[ i ] << endl;
}
return 0;
}
void initVectorInt(vector<int>& aVector, int seed)
{
srand(seed);
for(int i = 0; i < 100 + rand()%100; i++)
{
aVector.push_back(rand());
}
}
void makeVector(const vector<int>& VectorA,
const vector<int>& VectorB,
vector<int>& VectorC)
{
for(int i = 0 ; i < VectorA.size() ; i ++)
{
for(int j = 0 ; j < VectorB.size() ; j ++)
{
if(VectorA[i] == VectorB[ j ])
{
VectorC.push_back(VectorA[i]);
}
}
}
}