#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
int i, s, g;
vector<int> a;
cin >> s;
for(i=1;i<=s;i++)
{
g = s;
if(g<10) a.push_back(g);
else {
vector<int> temp;
while(g > 0)
{
int k = g % 10;
g = g / 10;
temp.push_back(g);
}
for(int j=temp.size();j>0;j--)
{
a.push_back(temp[j]);
}
}
}
cout << a[s-1] << endl;
return 0;
}
上面的代码有什么问题?它没有给我适当的结果。
vector a 应该保存从 1, 2, 3... 到 s 的值,使得 a = 12345..910111213... 并打印输出 a[s]。例如,如果 s=15 a=123456789101112131415 和 a[15] = 2 。
如果有人能告诉我这是什么问题
最佳答案
for(int j=temp.size();j>0;j--)
{
a.push_back(temp[j]);
}
此处 j 的值包括 temp.size 并排除 0。由于 vector (基本上与其他所有具有整数索引的东西一样)是 0 索引的,这将在第一次迭代时访问越界(即当您访问 temp[temp.size()]
).
关于c++ - 下面的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503103/