C++ STL VECTOR
あまりに素人で恥ずかしいが、 C++ の基礎をおろそかにしていたので引っ掛かった。
- C++ の vector のメソッド push_back は、要素を複製して、末尾に追加する。
- C++ の vector に push_back できる要素は、copy コンストラクタを持っている必要がある。複製の際には自動的に copy コンストラクタが呼ばれる。
一方、
- defstruct で定義する Common Lisp の構造体は通常 copy-構造体名 からなる複製用関数を持つ(定義しないこともできる)。
- Common Lisp の push は、"場所"に対して作用し、単なる list に対して適用すると先頭に追加する。複製用関数を自動的に呼び出したりしない。