向量下标超出范围问题
问题描述:
我有一个代码块,我声明了四个向量,初始化它们中的两个。然后我有两个for循环,我将元素添加到未初始化的向量中。最后,我将一个向量的所有元素重新分配给另一个向量。向量下标超出范围问题
但是在做这些时我得到这个错误 - “Vector下标超出范围”。我正在做的任何操作,我做错了向量?
我的代码:
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);
}
}
指数从'0'到'大小1'。你的for()'循环从'1'到'size'。所以最后一次迭代访问矢量之外。 – Barmar