C++ STL VECTOR

あまりに素人で恥ずかしいが、 C++ の基礎をおろそかにしていたので引っ掛かった。

  • C++vector のメソッド push_back は、要素を複製して、末尾に追加する。
  • C++vector に push_back できる要素は、copy コンストラクタを持っている必要がある。複製の際には自動的に copy コンストラクタが呼ばれる。

一方、

  • defstruct で定義する Common Lisp の構造体は通常 copy-構造体名 からなる複製用関数を持つ(定義しないこともできる)。
  • Common Lisp の push は、"場所"に対して作用し、単なる list に対して適用すると先頭に追加する。複製用関数を自動的に呼び出したりしない。