std :: vector <int>, выделенный с (n, 0), не повторяется - PullRequest
0 голосов
/ 13 мая 2018

Рассмотрим следующий код:

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

По сути, я создаю std::vector<int> с 4 элементами и назначаю каждому элементу 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.

Спасибо за ваше время, Али

1 Ответ

0 голосов
/ 13 мая 2018

Вы повторяете while (*it).

Если вы заполняете свой вектор нулями, *it == 0 и, следовательно, if (*it) походит на if (false): тело цикла никогда не выполняется.

Вместо этого цикл пока it != myV.end()

...