下面的代码工作正常上ideone,给人如预期为什么我的向量<int>不是默认为0?
但是我的本地机器上的
10000
10000
输出,输出的是那种
9990
9998
所有的代码做的创建一个10k int
的向量并计算其中的0的数量。一旦使用了课程,并且一次使用了课程。
如果我在调试模式下运行本地代码,它导致
0
0
我使用的代码块在Windows 7默认的GNU GCC编译器(尽管它编译C++,所以我想比其不同在Linux GCC这确实仅C)
#include<iostream>
#include<vector>
using namespace std;
class vecttest
{
vector<int> vect;
public:
vecttest()
{
vect.reserve(10000);
}
int zcount()
{
int count=0;
for(int i=0;i<10000;i++)
{
if(vect[i]==0)
count++;
}
return count;
}
};
int main()
{
vecttest v;
cout<<v.zcount();
vector<int> v2;
v2.reserve(10000);
int count=0;
for(int i=0;i<10000;i++)
{
if(v2[i]==0)
count++;
}
cout<<endl<<count;
}
ideone链路:http://ideone.com/q1XRvQ
你为什么认为它应该默认为零?你只是保留空间 – 2015-04-04 06:42:03
@EdHeal这就是接受的答案中提到的行为http://stackoverflow.com/questions/5222404/c-value-of-uninitialized-vectorint – Akash 2015-04-04 06:44:28
你应该使用'vect.resize(10000,0 );' – 2015-04-04 06:45:05