我对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”,我想用值填充向量/数组并输出这些值。
第二个应该再次输出它们。然而,这不会发生。在第一次完成之后,数组似乎是空的。
答案 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++)
和打印循环相同。