向向量添加元素时出错

时间:2017-10-26 04:13:01

标签: c++

我试图在向量中添加元素。我想添加10到21之间的所有偶数。但是我得到了错误。有人可以告诉我如何解决它。

int main()
{
vector<int> vect_name;
for (int i=10; i<21; i=i+2)
    vect_name.push_back(i);
    cout << vect_name[i] <<endl;

return 0;

}

3 个答案:

答案 0 :(得分:1)

我没有看到任何理由为什么你应该使用相同的索引变量打印向量的内容,该索引变量循环你正在添加的偶数。也许,您应该以这种方式构建代码:

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> vect_name;
    //push to vector
    for (int i=10; i<21; i=i+2) {
        vect_name.push_back(i);
    }

    // print the contents of vector
    for (size_t i =0; i < vect_name.size(); ++i) {
        cout << vect_name[i] << " ";
    }
    cout << '\n';

    return 0;    
}

答案 1 :(得分:0)

这是因为你缺少for循环的大括号。 你在for循环中创建的循环变量的范围仅限于它的大括号,因为你只缺少它只需要下一行的大括号。

因为循环变量i不可用

 File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DSLR CAMERASagar/");
        dir.mkdirs();

这应该解决它。

答案 2 :(得分:0)

您必须收到此错误

error: ‘i’ was not declared in this scope
cout << vect_name[i] <<endl;
                  ^

将语句括在括号中以指示循环体。没有大括号,只有一个后面的语句被视为循环体。

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> vect_name;
    for (int i = 10; i < 21; i = i + 2) {
        vect_name.push_back(i);
        cout << vect_name[i] << endl;    // Will print zeroes
    }
    return 0;
}

然而,这仍然会给出错误的结果,因为数组/向量在C ++中被索引为0。您需要在单独的循环中打印。

正确版本的代码看起来像

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v(6, 10);
    for (int i = 0; i < v.size(); i++) {
        v[i] += (i * 2);
        cout << v[i] <<endl;
    }
    return 0;
}

输出

10
12
14
16
18
20