c++ - 下面的代码有什么问题?

标签 c++ vector

#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/

相关文章:

c++ - 为什么你必须定义一个空的构造函数c++

c++ - 如何在不使用全局变量的情况下通知主线程状态的外部线程?

c++ - 如何处理您的 Windows 应用程序被强制关闭?

c++ - 向 vector 插入新项目时程序崩溃

c++ - 没有 TTY 的 Exelp 调用 bash

c++ - 使用临时生命周期差异

python - 将 C++ 成员 vector 包装为 Python OrderedDict

R:按字母和数字顺序对包含字符和数值的字符串向量进行排序

C++如何使用模板对 vector 进行排序

c++ - 如何在 vector 中搜索结构项?