LINUX.ORG.RU

Чем отличается код c++ с s.erase и без него?И откуда там нули во втором случае?

 , ,


0

1
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>

1

int main()
{
  int n;
  std::cin >> n;
  std::vector<int> v(n); // Копирование четных чисел одного вектора в другой
  for(int &x : v)
  std::cin >> x;
  std::vector<int> s(v.size());

  // !!! s.erase(std::copy_if(v.begin(), v.end(), s.begin(), [](int x){
      return x%2 == 0;
    }), s.end());

  std::copy(s.begin(), s.end(), std::ostream_iterator<int>(std::cout, ","));


}

2

int main()
{
  int n;
  std::cin >> n;
  std::vector<int> v(n); // Копирование вектора в другой
  for(int &x : v)
  std::cin >> x;
  std::vector<int> s(v.size());

  std::copy_if(v.begin(), v.end(), s.begin(), [](int x){
      return x%2 == 0;
    });

  std::copy(s.begin(), s.end(), std::ostream_iterator<int>(std::cout, ","));


}

Ответ на: комментарий от SerjVec

будь мужыком

выпей яду и ни о чем не парься.

mos ★★☆☆☆ ()
Ответ на: комментарий от SerjVec

просто erase не удаляет все элементы из s?

А почему он должен удалять все элементы из s?

Совет. Не используй выражения всё-в-одном, распиши по операциям.

i-rinat ★★★★★ ()
Ответ на: комментарий от SerjVec

Ты что, написал код, а теперь пытаешься его понять? Брутфорс-программирование?

Там же написано, что он делает. Копирует чётные элементы в s, а остальные удаляет.

i-rinat ★★★★★ ()
Ответ на: комментарий от SerjVec

Ты уверен, что правильную профессию выбрал? Придётся много думать, а ты явно не хочешь думать уже сейчас.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

я просто не понимал что возвращает copy_if, там в инструкции написано итератор на следующий элемент после последнего скопированного, т.е. если у меня 1 2 3 4 5 6 7, то на 6-ую позицию?

SerjVec ()
Ответ на: комментарий от SerjVec

на 6-ую позицию?

На четвёртую.

Возьми бумажку, нарисуй на ней массивы и «поиграй в компьютер» — выполняй руками действия по описанию в документации. Ну или можешь то же самое делать в уме, если сможешь столько информации удержать. :-)

i-rinat ★★★★★ ()
Ответ на: комментарий от BruteForce

Это потому, что в C++ есть почти все. А по стандартной библиотеке можно вообще гонять очень долго.

peregrine ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.