【C++】STL(Standard Template Library)相談室 4 at TECH
[2ch|▼Menu]
900:デフォルトの名無しさん
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

4269日前に更新/228 KB
担当:undef