分配有(n,0)的std :: vector <int>不可迭代

Ali*_*maz -5 c++ vector stdvector

请考虑以下代码:

#include <vector>
#include <iostream>


void monitor_vector(std::vector<int> myV)
{
  std::vector<int>::iterator it = myV.begin();
  std::cout << "Vector size: " << myV.size() << std::endl;
  while (*it)
  {
    std::cout << "Element " << it-myV.begin() << ": " << *it << std::endl;
    it++;
  }
}

int main()
{
  std::vector<int> myVector(4,1);
  monitor_vector(myVector);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

基本上,我创建了一个std::vector<int>包含4元素的元素,并分配每个元素1.当我执行这段代码时,一切都很好.输出显示每个元素.

但是,当我用这一行执行它时

  std::vector<int> myVector(4,1);
Run Code Online (Sandbox Code Playgroud)

替换为此行:

  std::vector<int> myVector(4,0);
Run Code Online (Sandbox Code Playgroud)

我看不到任何输出.输出是:

yilmazali@yilmazali:~/cpp_practice$ g++ -o la vector_practice.cpp
yilmazali@yilmazali:~/cpp_practice$ ./la
Vector size: 4
yilmazali@yilmazali:~/cpp_practice$ 
Run Code Online (Sandbox Code Playgroud)

为什么忽略具有默认整数值的元素?他们仍然是那里的成员std::vector.

谢谢你的时间,阿里

hlt*_*hlt 7

你迭代while (*it).

如果用零填充向量,*it == 0因此if (*it)就像if (false):循环体永远不会被执行.

相反,循环而 it != myV.end()