std::vector の使い方
今まで vector はこんな感じに使っていた。
std::vector<std::string> list; list.push_back(std::string("hoge")); list.push_back(std::string("fuga"));
これはこれでよいのかもしれないけど、push_back した時点でコピーコンストラクタが呼び出されるので、無駄にふたつオブジェクトを作成して、即座に片方をデストラクトしていることになる。うーん、よく考えればそりゃそうだ。
こういう場合は
std::vector<std::string *> list; list.push_back(enw std::string("hoge")); list.push_back(new std::string("fuga"));
とすることで、オブジェクトがふたつ作られてしまうオーバーヘッドを回避できる。ただし、効率と引き換えに list 内のオブジェクトの解放を忘れないようにしなければならない。