的中的数组存在问题

  • 本文关键字:问题 存在 数组 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",我想用值填充向量/数组并输出这些值。

第二个应该再次输出它们。然而,这并没有发生。第一个for完成后,数组似乎为空。

问题是您没有初始化迭代变量,这意味着它们得到了相当多的随机值(无论发生了什么,都位于内存中它们所在的位置)。改为:

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是"输出换行符"one_answers"刷新缓冲区"的组合。除非您真的想要这两种操作,否则(从性能角度来看)最好只为换行符输出n。例如:cout << "We're done.n";

  • 对于测试程序来说,这是可以的,但通常建议不要在源文件中执行using namespace std;(在头文件中这样做是非常危险的)。这在很大程度上是一个风格问题,但有时你可能会被名字冲突所困扰。

您没有初始化for循环语句中的变量i和y

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

应该是

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

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

对于打印循环也是如此。

相关内容

  • 没有找到相关文章

最新更新