次のように、std::vector に連続しない方法で値を挿入することは可能ですか?
std::vector<int> Myvector;
//Myvector[0] = 123;
//Myvecotr[2] = 456;
//Myvector[5] = 789;
並べ替え。この方法で実際に挿入することはできませんが、サイズを設定して、関心のあるものだけに値を設定することはできます。
本当にまばらにしたい場合(たとえば、例では Myvector[1]、[3]、[4] はまったく存在しません)、いいえ。std::map<int, int>
そのようなものには、ベクトルの代わりに を使用できます。
コードが、まだ存在しない要素のインデックスを使用している場合。つまり、インデックスが (>=) を超える場合、vector::size()
存在しない要素にアクセスしています。残念ながら、未定義の動作に陥ります。
std::vector<int> Myvector;
Myvector[0] = 123; // boom Myvector[0] was never created
したがって、これらの要素を追加する必要があります
// the boring way
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector.push_back(0);
Myvector[0] = 123; // set element 0 to 123
Myvector[2] = 456; // set element 2 to 456
または、他の回答で述べたように、サイズを設定します(私が好む):
Myvector.resize(5);
または、最初からのサイズを述べます。
std::vector<int> Myvector(5); // 5 elements, all with the value of the default c'tor
最初にサイズを設定できれば、このようなことができます
vector<int> iVec(5);
iVec[0] = 0;
iVec[2] = 2;
iVec[4] = 4;