Подтвердить что ты не робот

Vector 'no operator "[]" соответствует этой ошибке операндов в Visual Studio смотреть

При переходе через следующий образец кода в Visual Studio 2012:

std::vector<int> test;
test.resize(1);
test[0] = 4;

Я могу установить часы на тест и проверить его 0-й элемент. Однако, если я устанавливаю часы на тест [0], я получаю ошибку "нет оператора" [] "соответствует этим операндам":

enter image description here

Как я могу напрямую проверить значение теста [0]?

4b9b3361

Ответ 1

Я нашел одно решение, которое не зависит от внутренних элементов класса. По-видимому, расширенная форма вызова оператора работает для меня. В этом случае это следующий код:

v.operator[](0)

Я тестировал его на Visual С++ 2012.

Ответ 2

Как отметил @NateKohl, в Visual Studio 2012 (и, возможно, более ранних версиях) v._Myfirst дает указатель на базовые векторные данные, позволяя вам смотреть вектор так, как если бы он был массивом.

Ответ 3

Visual Studio не поддерживает перегрузку оператора stl контейнеров [], вам просто нужно вручную установить часы на интересующий вас элемент, выбрав его из списка во время отладки.

EDIT: если вы хотите проверить объект T внутри вектора, назначьте его объекту T и установите вместо него часы

Ответ 4

если вы используете 2D vecotr < вектор < string → dp, и вы хотите получить dp [i] [j] в окне просмотра в VS2013, вы можете использовать (dp.operator [] (i)). operator [] (j)

вектор < вектор < string → dp (n, vector <string> (n, ""));

(dp.operator [] (i)). operator [] (j)