我似乎无法找到的错误

时间:2015-06-04 21:11:01

标签: c++ visual-studio

我是一名初学者,仍在学习C ++我正在玩矢量,看看会发生什么。每当我开始它时都会给我一个调试错误。 这是代码

int main()
{

    vector<int> num;
    int i = 0;
    while (i != 1000)
    {
        ++i;
        num.push_back(i);
        cout <<num[i]<<"\t"<< sqrt(num[i]) << "\n";
    }
}

5 个答案:

答案 0 :(得分:1)

问题在于while()循环中的操作顺序:

while (i != 1000)
{
    ++i;
    num.push_back(i);
    cout <<num[i]<<"\t"<< sqrt(num[i]) << "\n";
}

i从0开始。在每次迭代中,您push_back一个元素,然后使用计数器i - 增量后打印它。因此,num[i]指的是一个尚未存在的元素。

将您的代码更改为:

while (i < 1000)
{
    num.push_back(i + 1);
    cout <<num[i]<<"\t"<< sqrt(num[i]) << "\n";
    ++i;
}

答案 1 :(得分:1)

向量的索引从零开始。在您的代码中,您总是在更新(或推送)之前访问1个索引。

答案 2 :(得分:0)

当我在两个陈述之后增加i时,它工作正常。 我不知道如何,但它工作得很好。 谢谢大家。

     int main()
 {

    vector<int> num;
    int i = 0;
    while (i != 1000)
    {
        num.push_back(i);
        cout <<num[i]<<"\t"<< sqrt(num[i]) << "\n";
        ++i;
    }
 }

答案 3 :(得分:-1)

确保您使用

form = browser.get_form(id="searchform")
form["search"].value = "Beethoven Opus 131"
browser.submit_form(form, submit=form.submit_fields['go'])

答案 4 :(得分:-1)

该代码适用于以下预处理器。

#include <iostream>
#include <vector>

using namespace std;