我对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++)
对于打印循环也是如此。