いくつかのアルゴリズムの書籍からQueueの実装を読みましたが、私が理解していない新しい/興味深いスニペットがあります。私はそれがC++ 11のベクタの初期化リストのような新しいものだと思いますが、コードのコンテキストのために自信がありません。誰かが光を当てたり、参考にすることはできますか?C++のコンストラクタの中かっこのパラメータは何ですか?
template <typename T>
class Queue {
private:
size_t head, tail, count;
vector<T> data;
public:
Queue(const size_t &cap=8) : head(0),tail(0),count(0),data({cap}) {}
//... more interfaces
//...
}
疑問部分はデータ({cap})ですが、これは何ですか?それはキャップの容量にベクトルのサイズを変更しますか? (明らかに、コードの作成者は、データを作成するときに上限を与えることを意図しています)。
EDIT: 最初の回答とテストを読んだ後で、本はスニペットにエラーがあることがわかりました。それは最初のキャップを与えるつもりですが、誤った{}が使われました。
http://en.cppreference.com/w/cpp/utility/initializer_list – BoBTFish
[C++ 11ファンイニシャライザリスト、配列、列挙型](http://stackoverflow.com/questions/8606315/c11-fun-with-initializer-lists-arrays-and-enumerations)を参照してください。質問をする前に、おそらくC++リファレンスを調べるべきです。基本的な構文の質問はそのように答えることができます。 –
私が間違っていない場合、 '{cap}'は空のサイズ8のリストにする必要があります。デフォルトの長さ8 ...またはリスト8で初期化しますので、これで終わります。 – Shark