をリセットベクトル<bool>はARR、例えば発行
vector<bool> arr(10);
arr[0]=true;
そして、私はベクトルをリセットしたいです。 ので、
arr.clear();
私は偽がゼロであるため、すべての要素を持つベクトルがゼロに期待しています。
printf("%d", arr[0]);
しかし、結果num>は0;
クリア前の値さえクリア後の値と同じです!
どうしましたか?あなたは、ベクトルの大きさはそれほど未定義の動作を起こしarr[0]
添字演算子を使って任意の要素にアクセスする0となりclear()
を呼び出した後
// Test Code
vector<bool> arr(101);
arr[1] = true;
printf("Before Value : %d\n", arr[1]);
arr.clear();
printf("Result : %d\n", arr[1]);
// Test Code
vector<bool> arr(101);
printf("asdf : %d\n", arr.size());
// Test Code
arr[1] = true;
printf("Before Value and size : %d, %d\n", arr[1], arr.size());
arr.clear();
printf("Result and size : %d, %d\n", arr[1], arr.size());
// Test Code
* "Falseがゼロであるため、すべての要素がゼロのベクターが必要です。" * - なぜそれを期待していますか?ドキュメントがありますが、APIが何をしているのか推測すべきではありません。 – StoryTeller
参照:http://en.cppreference.com/w/cpp/container/vector/clear – Shubham