64,632
社区成员
发帖
与我相关
我的任务
分享
template <class T>
inline void ContainerDouble( T& coll )
{
/*//algorithm 1
if( 1 > coll.size() ) return;
fill_n( back_inserter(coll), coll.size(), *coll.begin() );
typename T::iterator pos = coll.begin();
advance( pos, coll.size() >> 1 );
copy( coll.begin(), pos, pos );*/
/*//algorithm 2
T tmp(coll);
coll.insert( coll.end(), tmp.begin(), tmp.end() );*/
typename T::size_type n, count = coll.size();
typename T::iterator pos;
for ( n=0; n<count; n++ )
{
pos = coll.begin();
advance( pos, n );
coll.insert( coll.end(), *pos );
}
}
template <class T>
inline void ContainerDouble( T& coll )
{
T temp(coll);
temp.insert(temp.end(), coll.begin(), coll.end());
temp.swap(coll);
}
template <class T>
inline void ContainerDouble( T& coll )
{
T temp(coll);
temp.insert(temp.end(), coll.begin(), coll.end());
temp.swap(coll);
}
template <class T>
inline void ContainerDouble( T& coll )
{
if( 1 > coll.size() ) return;
fill_n( back_inserter(coll), coll.size(), *coll.begin() );
typename T::iterator pos = coll.begin();
advance( pos, coll.size() >> 1 );
copy( coll.begin(), pos, pos );
}
coll.insert( coll.end(), coll.begin(), coll.end() );
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> coll;
for (int i = 0; i < 10; i++)
{
coll.push_back(i);
}
vector<int>::iterator pos = coll.begin();
back_insert_iterator<vector<int> > iteratorBack(coll);
vector<int>::size_type m = coll.size(), n;
for (n = 0; n < m; n++)
{
*iteratorBack++ = coll[n]; // 你原来的写法不正确
}
for (n = 0; n < coll.size(); n++)
cout << coll[n] << " ";
cout << endl;
}