【C++】template 統合スレ -- Part5
■ このスレッドは過去ログ倉庫に格納されています
0595デフォルトの名無しさん
NGNG#include <vector>
#include <algorithm>
#include <iterator>
template< typename InputIterator , typename ForwardIterator >
ForwardIterator strong_copy( InputIterator first , InputIterator last , ForwardIterator result )
{
typedef typename std::iterator_traits< ForwardIterator >::value_type value_type;
std::vector< value_type > backup;
ForwardIterator const result_first = result;
try
{
while( first != last )
{
backup.push_back( *result );
*result = *first;
++result;
++first;
}
return result;
}
catch( ... )
{
std::swap_ranges( backup.begin() , backup.end() , result_first );
throw;
}
}
// ・入力も ForwardIterator に狭めれば backup に reserve をかけることができる
// ・reserve できないなら、 backup は vector よりも list,deque のほうがいいかも
■ このスレッドは過去ログ倉庫に格納されています