vector<T>
ベクトルのサイズを取るコンストラクターがあり、私が知る限り、それは明示的です。これは、次のコードがコンパイルに失敗するという事実によって証明できます
void f(std::vector<int> v);
int main()
{
f(5);
}
私が理解できず、説明を求めているのは、次のコードがコンパイルされる理由です
std::vector<std::vector<int>> graph(5, 5);
コンパイルするだけでなく、実際にグラフのサイズを 5 に変更し、各要素を 5 つのゼロのベクトルに設定します。つまり、私が通常書くコードと同じことを行います。
std::vector<std::vector<int>> graph(5, std::vector<int>(5));
どのように?なんで?
コンパイラ: MSVC10.0
OK、MSVC のバグのようです (さらに別のバグです)。誰かが回答でバグについて詳しく説明できる場合(つまり、バグが再現された場合を要約する場合)、喜んで受け入れます