Почему я не могу индексировать std :: вектор в непосредственном окне?
-
24-09-2019 - |
Вопрос
Итак, у меня есть вектор
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].