- 「new」で生成されたオブジェクトは、この概念で正しく削除されるのだろうか。
- 「bind2nd」の代わりに「bind」を使用できません。どうすればいいですか?
- 最後の質問: 名前付き関数の代わりにラムダ項を使用して同じことを行うにはどうすればよいですか?
リストを使用する理由 オブジェクトがシーケンス化されていないため、ベクトルではなくリストを使用することにしました。最後に、「ウォーターフォールのような」コードをオブジェクト指向に導入したいと考えています。これは、基本的にパフォーマンスの問題のためです (ここで問題が表示されます)。そのため、コンテナーの階層内のオブジェクトにすばやくアクセスし、それらが互いに通信できるようにします。これも高速です。モジュラーシンセサイザーを思い浮かべてください。
class Layer {
private:
string name;
bool active;
public:
Layer();
Layer(string m_name, bool m_active);
bool isName(string m_name);
};
// ... constructors
bool Layer::isName(string m_name) {
return name == m_name;
}
class Stack {
public:
list<Layer*> layer;
list<Layer*>::iterator iter;
};
int main() {
Stack stack;
stack.layer.push_back(new Layer);
stack.layer.push_back(new Layer("snail", true));
stack.layer.push_back(new Layer("squirrel", false));
string search = "snail";
stack.layer.remove_if(bind2nd(mem_fun(&Layer::isName), search));
return 0;
}