std :: vector < std :: vector < T > > :: end () rend () begin () и т.д. не имеет членов?

Я решил свою проблему. Мы можем просто отправить заголовок в application / json и передать тело как объект json. Это просто решает проблему.

-4
задан NorthernSage 17 March 2019 в 23:55
поделиться

3 ответа

Возврат обратного итератора к обратному концу Возвращает обратный итератор, указывающий на теоретический элемент, предшествующий первому элементу в векторе (который считается его обратным концом).

Диапазон между vector :: rbegin и vector :: rend содержит все элементы вектора (в обратном порядке).

теоретический элемент, предшествующий первому -> На него нельзя ссылаться. Это не указывает на элемент.

Я предполагаю, что вы хотите сделать: v.back()->push_back({});

Это, учитывая, что v не является пустым. Сначала вы должны сделать v.push_back({}), если он пуст в качестве примера.


Что касается IDE, это должно быть проблемой конфигурации. Я в основном работаю над Eclipse, там эта проблема обычно решается:

  • Установка параметров компилятора в соответствии с настройками вашего cmake (например, проекты C ++ по умолчанию не поставляются с c ++ 11 включен, поэтому вы должны убедиться, что он имеет -std = c ++ 11 в настройках компилятора IDE).

  • Повторное сканирование для всех включает.

Обычно вы можете попытаться проверить, не распознано ли что-то (например, недоудача по ключевому слову vector). И когда вы нажмете Ctrl + клик по вектору, вы сможете увидеть, какой заголовок использует IDE и какой код он использует (могут быть некоторые ifdef, а некоторые могут быть не активированы, например, например, __cppversion> = 201103L или что-то подобное означает IDE считает, что у вас нет компилятора C ++ 11).

0
ответ дан Mirko 17 March 2019 в 23:55
поделиться

Вздох. У вас есть пара проблем, и не совсем очевидно, что вас волнует.

  1. CLion не удалось показать std::reverse_iterator<...> методы.

    1114 Понятия не имею, вы действительно зависите от этого? Знаете, есть документация .

  2. Ни итераторы end(), ни rend() в любом случае не могут быть разыменованы, поэтому они не указывают на что-либо . Поэтому, даже если у типа точки итератора есть этот метод, вызывать его было бы недопустимо, потому что там нет объекта.

Вы можете добавить элемент к последней записи в вашем внешнем векторе, например,

v.back().push_back({});

, если вы этого хотите. Но, как последнее напоминание, методы end() и rend() возвращают один и тот же итератор, который не может быть разыменован. Не делай этого.

0
ответ дан Useless 17 March 2019 в 23:55
поделиться

Итак, вы используете CLion IDE и систему сборки Bazel, и вы не получаете автозаполнения в своем коде C ++. Автозаполнение работает, когда вы переключаетесь на систему сборки CMake.

Согласно документации Bazel , их интеграция CLion для автозаполнения находится в бета . При нажатии на их документы IntelliJ (по ссылке в разделе CLion) только Java и Python перечислены в качестве поддерживаемых языков .

Итак, это просто пока не поддерживается.

Вы можете запросить подтверждение у команды разработчиков этого проекта и информацию о том, когда может появиться поддержка C ++ в Bazel для CLion.

Кстати, у вас есть ошибка в вашем коде: rbegin() не будет разыменовываться, когда вектор пуст. Хотя, надеюсь, этот фрагмент был просто экспозицией.

0
ответ дан Lightness Races in Orbit 17 March 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: