Почему я не могу индексировать std :: вектор в непосредственном окне?

StackOverflow https://stackoverflow.com/questions/2179724

Вопрос

Итак, у меня есть вектор

 std::vector<std::string> lines. 

Я заполняю этот вектор вверх и могу получить доступ к этому

 std::string temp = lines[0];

Однако в непосредственном окне оба

 lines[0] - error:overloaded operator not found

а также

 lines.at(0) - error:symbol is ambiguous

Не работай вообще. Есть ли трюк для использования немедленного окна с C ++. Я в основном приезжаю из фона C #, где все работает хорошо (и у меня есть Intellisense в непосредственном окне). Я не ожидал, что C ++ будет отличным, но я подумал, что это будет работать, кроме того, ints. Кто-нибудь может сказать мне, что я делаю не так? Спасибо.

Редактировать: Я должен быть понятен, в непосредственном окне ничего не работает, это просто упрощенный пример

Редактировать: Я в режиме отладки

Это было полезно?

Решение

Немедленные и смотрители Windows не поддерживают перегруженные операторы. Там есть некоторая поддержка для печати стандартных контейнеров в целом в разумной моде (см., Например, http://www.virtualdub.org/blog/pivot/entry.php?id=120.), но это не распространяется на возможность использовать operator[] на них.

Надеюсь, это будет улучшено в более поздних редакциях отладчика, но на данный момент, чтобы посмотреть на элемент I'TH Vector, попробуй lines._Myfirst[i].

(_Myfirst, в стандартных библиотеках, которые поставляются с VC ++, происходит переменная участника в std::vector это указывает на первый элемент последовательности. Так что это просто изучает вектор, как будто это был какой-либо другой объект. Чтобы разговаривать это, мне пришлось посмотреть на заголовки ... не очень удобно, но, надеюсь, это поможет вам. Возможно, вы можете сделать что-то подобное с другими контейнерами, но вам придется посмотреть в заголовки, чтобы выработать, как.)

(Кстати, если вы работаете в C #, отладчик C ++, вероятно, по-видимому, по-прежнему, по-прежнему, по сравнению с более дешевым гладким, и это всего лишь один пример этого. Я получаю впечатление, что было намного больше работы в Сторона CLR.)

Другие советы

В Now Aday's Visual Studio Versions (например, 2013/2015) _myFirst Переменная участника больше не существует для std :: Векторная переменная. Используйте _c_begin вместо - средство для данного примера, например, линий ._c_begin [I].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top