Я не могу вызвать операцию erase в std::vector. Я не знаю, что пошло не так, и пытаюсь это исправить. Я не могу понять, в чем, собственно, заключается ошибка. В учебниках, представленных в Интернете, операция erase вроде бы работает, но здесь это не так. Ниже я привожу свой код и соответствующие ошибки.

#include 
#include 
#include 

using std::vector;
using std::endl;
using std::pair;

bool ascSort(const pair &a, const pair &b) {
  return a.second < b.second;
}

vector optimal_points(vector> &segments) {
  vector points;
  long long n = segments.size();
  long long count = 0;
  while(n!=0) {
    vector::iterator it1 = segments.begin();
    long long firstNum = segments[0].second;
    for (long long i=1; i= segments[i].first)) {
        std::cout<<"YAYY"<> n;
  vector first;
  vector second;
  for (long long i=0; i>first[i]>>second[i];

  вектор > сегментов;
  for (long long i=0; i points = optimal_points(segments);
  std::cout << points.size() << "\n";
  for (size_t i = 0; i < points.size(); ++i) {
    std::cout << points[i] << " " ";
  }
}

И вот мои ошибки:

covering_segments.cpp: В функции 'std::vector optimal_points(std::vector >&)':
covering_segments.cpp:20:53: error: conversion from '__normal_iterator*,vector>>' to non-scalar type '__normal_iterator>' requested
     vector::iterator it1 = segments.begin();
                                       ~~~~~~~~~~~~~~^~
covering_segments.cpp:28:40: error: no matching function for call to 'std::vector >::erase(std::vector::iterator&, __gnu_cxx::__normal_iterator >)'
         segments.erase(it1, it1 + (i-1));

Как мне решить эту проблему?

raviujjwal

Ответов: 1

Ответы (1)

В данном синтаксисе:

vector::iterator it1 = segments.begin();

Постановка простого auto выведет тип в std::vector>::iterator (в точности как у функции begin) - так что оба варианта совпадают.

Вторая проблема с erase() тоже будет исправлена, компилятор ранее обнаружил ошибку в вашем коде, потому что не было такой перегруженной функции, которая поддерживала бы тип vector::iterator в качестве допустимого параметра - все ошибки были исправлены сразу после изменения типа. Вот живой пример компиляции без ошибок.

2022 WebDevInsider