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

std::vector<int> allocated with (n,0) is not iterable

考虑以下代码:

#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;
}

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

然而,当我用这一行执行它时

  std::vector<int> myVector(4,1);

替换为此行:

  std::vector<int> myVector(4,0);

我看不到任何输出。输出为:

yilmazali@yilmazali:~/cpp_practice$ g++ -o la vector_practice.cpp
yilmazali@yilmazali:~/cpp_practice$ ./la
Vector size: 4
yilmazali@yilmazali:~/cpp_practice$ 

为什么会忽略默认整数值的元素?尽管如此,他们仍然是 std::vector 的成员。

感谢您的宝贵时间, 阿里

你迭代 while (*it).

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

相反,在 it != myV.end()

时循环