私はthis questionより早く尋ねました。私はstd :: setに興味を持っていますが、別の混乱するシナリオがあります。さらにstd :: set woes
すなわち、T = STD ::ベクトル及びT = STDのための次のコード法的、移植可能なC++で::設定:
template <typename T>
void remove_elements(T& collection, int removal_value)
{
typename T::iterator new_end =
std::remove(collection.begin(), collection.end(), removal_value);
collection.erase(new_end, collection.end());
}
SGI基準によれば、設定::イテレータと設定:: const_iteratorは同じなので、これが正当なものかどうかはわかりません。しかし、私はタイプに関係なく動作する必要がある操作を得る別の方法を見つけることができないようです。私はテンプレートの専門化に頼ることができますが、最初の場所に特化する必要はありません。
これらのことを試す前に、scott meyerの有効なstlをよく読んでください。特に項目2:コンテナに依存しないコードの錯覚に注意してください。一般的なものにすることはできないものもあれば、スケーラビリティの問題もあるものもあります。 – stefaanv