【C++】STL(Standard Template Library)相談室 4at TECH
【C++】STL(Standard Template Library)相談室 4 - 暇つぶし2ch900:デフォルトの名無しさん
06/03/14 06:54:23
>>898
それだとtargetとeraseのサイズに比例した一時領域を食うからアンマリ良くないと思う。
コピーを作るより破壊的にコンテナに直書きしていったほうがコストが抑えれる。

void VectorEraser( std::vector<int>& target,const std::vector<int>& erase) 
{ 
    std::vector<int>::const_iterator ei(erase.begin());
    std::vector<int>::const_iterator ee(erase.end());
    std::vector<int>::iterator di(target.begin());
    std::vector<int>::iterator tb(target.begin());
    std::vector<int>::iterator ti(target.begin());
    std::vector<int>::iterator te(target.end());
    for(;ei != ee;++ei) {
        std::vector<int>::iterator x(tb);std::advance(x,*ei);
        di = std::copy(ti,x,di);
        ti = ++x;
    }
    di = std::copy(ti,te,di);
    target.resize(std::distance(target.begin(),di));
}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch