私は4つのベクトルを宣言し、そのうちの2つを初期化するコードブロックを持っています。次に、2つのforループがあります。ここでは、初期化されていないベクトルに要素を追加しています。最後に、あるベクトルのすべての要素を別のベクトルに再割り当てします。ベクトルの添え字が範囲外にある問題
これらを実行しているうちに、このエラーが発生しています。「Vector Subscript out of range」。私が間違っているベクタに対して何か操作していますか?
マイコード:
int main()
{
std::vector<int> K;
K.insert(K.begin(),0);
std::vector<int> tempK;
std::vector<int> S;
S.insert(S.begin(),0);
std::vector<int> tempS;
int n;
float exptd = 0;
float SD = 0;
std::cout<<"How many steps: ";
std::cin >> n;
for (int j= 1; j<=n; j++) {
for (int i=1; i<=K.size(); i++) {
if (K[i] == 0) {
tempK.push_back(4); tempK.push_back(6);
tempS.push_back(K[i]+4); tempS.push_back(K[i] +6);
}
else if (K[i] == 1) { tempK.push_back(6); tempK.push_back(8);
tempS.push_back(K[i]+6); tempS.push_back(K[i] +8);
}
else if (K[i] == 2) {
tempK.push_back(7); tempK.push_back(9);
tempS.push_back(K[i]+7); tempS.push_back(K[i] +9);
}
else if (K[i] == 3) {
tempK.push_back(4); tempK.push_back(8);
tempS.push_back(K[i]+4); tempS.push_back(K[i] +8);
}
else if (K[i] == 4) {
tempK.push_back(3); tempK.push_back(9); tempK.push_back(0);
tempS.push_back(K[i]+3); tempS.push_back(K[i] +9);
tempS.push_back(K[i] +0);
}
else if (K[i] == 6) {
tempK.push_back(1); tempK.push_back(7); tempK.push_back(0);
tempS.push_back(K[i]+1); tempS.push_back(K[i] +7);
tempS.push_back(K[i] +0);
}
else if (K[i] == 7) {
tempK.push_back(2); tempK.push_back(6);
tempS.push_back(K[i]+2); tempS.push_back(K[i] +6);
}
else if (K[i] == 8) {
tempK.push_back(1); tempK.push_back(3);
tempS.push_back(K[i]+1); tempS.push_back(K[i] +3);
}
else if (K[i] == 9) {
tempK.push_back(2); tempK.push_back(4);
tempS.push_back(K[i]+2); tempS.push_back(K[i] +4);
}
}
S = tempS;
tempS.clear();
tempS.resize(100);
K = tempK;
tempK.clear();
tempK.resize(100);
}
}
インデックスは 'サイズ-1 'に' 0 'から行きます。 'for()'ループは '1'から' size'に向かっています。したがって、最後の繰り返しはベクトルの外側にアクセスします。 – Barmar