数组中的问题

时间:2013-12-14 11:10:26

标签: c++

我对C ++很陌生,之前我只使用过高级语言。

这是我的问题。这只是为了尝试一些事情。

#include <iostream>
#include <vector>
using namespace std;
int main() {
    vector<int> ve(10);
    for (unsigned int i; i < ve.size(); i++) {
        ve[i] = i+1;
        cout << ve[i] << endl;
    }
    cout << "Done filling vector. Now showing" << endl;
    for (unsigned int y; y < ve.size(); y++) {
        cout << ve[y] << endl;
    }
    cout << "We're done" << endl;
} 

对于第一个“for”,我想用值填充向量/数组并输出这些值。

第二个应该再次输出它们。然而,这不会发生。在第一次完成之后,数组似乎是空的。

3 个答案:

答案 0 :(得分:1)

问题是你没有初始化迭代变量,这意味着他们得到了相当多的随机值(无论发生在他们所在位置的内存中)。这样做:

for (unsigned int i = 0; i < ve.size(); i++) {
    ve[i] = i+1;
    cout << ve[i] << endl;
}

for (unsigned int y = 0; y < ve.size(); y++) {
    cout << ve[y] << endl;
}

(注意:差异是初始化= 0


一些不相关的提示:

  • for循环初始化子句中声明的变量是循环的局部变量,它们不能在它外部访问。这意味着他们都可以被称为i

  • std::endl是&#34;输出换行符&#34;的组合。并且&#34;刷新缓冲区。&#34;除非你真的想要同时进行这两项操作,否则只需输出\n来换行即可。(性能方面)。例如:cout << "We're done.\n";

  • 对于测试程序来说没问题,但一般情况下,即使在源文件中也不建议using namespace std;(并且在标题中执行此操作非常危险)文件)。这在很大程度上取决于风格,但有时你可能会被名字冲突所困扰。

答案 1 :(得分:1)

您没有在for-loop语句中初始化变量i和y

for (unsigned int i; i < ve.size(); i++) 

应该是

for (unsigned int i = 0; i < ve.size(); i++) 

答案 2 :(得分:1)

for (unsigned int i=0; i < ve.size(); i++)

for (unsigned int i; i < ve.size(); i++)

和打印循环相同。