Discussion:
оператор [] при Обращении к указателю на вектор
(слишком старое сообщение для ответа)
Stanislav Kiselev
2014-07-28 05:54:48 UTC
Permalink
Привет, All!

иногда удобно использовать указатель заместо ссылки но:

std::vector<int> *vec = &some_vector...;

int a = vec->operator[](100);
как-нить покрасивее можно вызвать оператор[] ?

( vector::at() не используя - он каждый раз проверяет на вхождение в диапазон

int a = vec->[100]; - так низзя к сожелению (

пока сделал std::vector<int> & vec1 = *vec; тоже не гут - разименовка +
вычисление адреса
int a = vec1[100];

С наилучшими пожеланиями, Stanislav.
Serguei E. Leontiev
2014-08-01 14:02:32 UTC
Permalink
Станислав, привет,
Post by Stanislav Kiselev
int a = vec->operator[](100);
как-нить покрасивее можно вызвать оператор[] ?
А разве нельзя вот так:
a = (*vec)[100];
Post by Stanislav Kiselev
пока сделал std::vector<int> & vec1 = *vec; тоже не гут - разименовка +
вычисление адреса
int a = vec1[100];
М-м, а ты, это, в код заглядывал или сам придумал? В отладочном коде,
конечно, в переменную vec1 адрес могут скопировать, для тупых отладчиков.
Hо при минимальной оптимизации, я думаю, код не будет отличаться от обеих
предыдущих вариантов.
--
Успехов, Сергей Леонтьев, <http://www.cryptopro.ru> (NewsTap)
Stanislav Kiselev
2014-08-04 07:40:38 UTC
Permalink
Привет, Serguei!

01 авг 14 18:02, Serguei E. Leontiev -> Stanislav Kiselev:

SL> М-м, а ты, это, в код заглядывал или сам придумал? В отладочном коде,
SL> конечно, в переменную vec1 адрес могут скопировать, для тупых
SL> отладчиков. Hо при минимальной оптимизации, я думаю, код не будет
SL> отличаться от обеих предыдущих вариантов.

Да, действительно (*vec)(100) и vec->operator[](100)
выглядят внутри абсолютно одинаково. Спасибо - вопрос исчерпан.

С наилучшими пожеланиями, Stanislav.

Loading...