std::string
オブジェクト ポインタの別のベクトルの構造を表す のベクトルがあります。このオブジェクト ポインターのベクトルを生成したいと思います。同じオブジェクトが 2 つある場合、ベクトル内のポインターも同じです。
私がそこに何を意味するのか分かりませんか?例を挙げましょう。std::vector
私がのを持っているとしましょうstd::string
:
std::vector<std::string> names;
names.push_back(std::string("A"));
names.push_back(std::string("A"));
names.push_back(std::string("B"));
names.push_back(std::string("C"));
names.push_back(std::string("A"));
ここで、これらの名前 ( A
、B
およびC
) が の 3 つの異なるインスタンスを表しているとしますObject
。
Object* ptr_A = new Object(1); // A
Object* ptr_B = new Object(2); // B
Object* ptr_C = new Object(3); // C
Object
へのポインターを保持するベクターを、ベクターと同じ順序で生成したいと思いますnames
。
std::vector<Object*> objects;
objects.push_back(ptr_A);
objects.push_back(ptr_A);
objects.push_back(ptr_B);
objects.push_back(ptr_C);
objects.push_back(ptr_A);
2 つの名前が同じ場合、ポインターも同じになるようにします。
これを効率的に行うにはどうすればよいですか?ベクトルを後で使用できるように、これを行う関数内でオブジェクトを動的に割り当てたいことに注意してください。
これを使用して、名前に基づいてファイルからオブジェクトを読み取りますが、基本的に同じオブジェクトを複数作成しないようにしたいと考えています。
これは宿題なので、まだ C++11 は使えません。