1

ジェネリックで、出力反復子を任意のコンテナー型 (つまり、アロケーターに関係なく特定の種類のマップ) に渡す関数を作成しようとしています。

ただし、 itOut によって参照されるマップに既に要素が含まれているかどうかを知りたいです。含まれている場合は、それを更新します

template<typename OutputIterator>
static void foo(const std::wstring& rstr, OutputIterator itOut)
{
    // Insert two items into the map that itOut references
    itOut++ = TokenPair(t, 1);
    itOut++ = TokenPair(t, 2);

    // This here I don't know how to do
    if(somehow check the map already contains t)
    {
        map[t] = 5;
    }
}

確かにこれには方法があるはずですか?

プログラムの他の部分は、同じペアを持つが異なるアロケータを持つマップを渡そうとしているため、これが最善の方法のようです。

4

1 に答える 1

1

Andy Prowl が提案した解決策を採用しました。この方法では、適切なマップ タイプを取得するようにテンプレート化されています。そうすれば、アロケータは無関係になります。

于 2013-03-06T12:15:18.920 に答える