Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
#1

Указатель на метод класса - C++

09.03.2014, 23:51. Просмотров 288. Ответов 8
Метки нет (Все метки)

Доброго времени суток, форумчане.
Необходимо получить указатель на размер вектора.
Делаю из соображений быстродействия, т.к. каждый раз обращаться через оператор точки будет долго.
Возможно я не прав. Просто думается, что обращаться напрямую через указатель быстрее нежели через класс. Искал много и даже находил решения моей проблемы, но вообще не понимаю как делать и как должно работать. Прошу помощи знающих и объяснения "для чайников".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SharpDeveloper
127 / 124 / 14
Регистрация: 16.02.2012
Сообщений: 413
10.03.2014, 00:58     Указатель на метод класса #2
Скорее всего вы не правы. При вызове через указатель на функцию класса компилятор сгенерирует почти такой-же по производительности код, имхо.
Как должно работать: http://msdn.microsoft.com/en-us/library/k8336763.aspx
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.03.2014, 04:48     Указатель на метод класса #3
Речь про указатель на метод size()?
C++
1
2
3
4
5
6
7
vector <int> v;
v.push_back(1);
v.push_back(2);
cout << v.size() << endl;
std::vector<int, std::allocator<int>>::size_type (std::vector<int>::*psize_vec_int)() const = &std::vector<int, std::allocator<int>>::size;
 
cout << (v.*psize_vec_int)() << endl;
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2014, 04:51     Указатель на метод класса #4
Цитата Сообщение от Arkaniy Посмотреть сообщение
Просто думается, что обращаться напрямую через указатель быстрее нежели через класс.
Нет.
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
10.03.2014, 05:10     Указатель на метод класса #5
Цитата Сообщение от Arkaniy Посмотреть сообщение
Просто думается, что обращаться напрямую через указатель быстрее нежели через класс
Нет. Потому что указатель на метод, это не указатель на самом деле, а смещение. Обращение через него требует указатель на объект. Следовательно получится тоже самое.
И вообще не там ты оптимизировать затеял. Самая лучшая оптимизация - алгоритмическая. А все эти клевые шутки, которые мы можем сотворить с языком в коде, на самом деле мало что дают. Однако это не значит что надо писать как попало, просто надо писать без лишнего фанатизма.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
10.03.2014, 14:35  [ТС]     Указатель на метод класса #6
Спасибо всем отписавшимся, но я ,по-видимому, не верно поставил задачу
Из того, что вы ответили, я примерно понял как это работает, как получить указатель на метод и то, что мне нужно читать про аллокаторы. Но мне нужен указатель на возвращаемое значение.
Мне нужно что-то вроде этого
C++
1
int *nPoints = &Graph::pointsVector.size();
И опять же, возможно я снова заблуждаюсь о повышении скорости работы.
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
10.03.2014, 14:37     Указатель на метод класса #7
Arkaniy, см. rvalue references и move semantics из нового стандарта. А так же почитай про RVO.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
10.03.2014, 14:41  [ТС]     Указатель на метод класса #8
DrOffset, довольно лаконично. Но спасибо и на этом, буду искать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 14:45     Указатель на метод класса
Еще ссылки по теме:

C++ Указатель на поле класса
Указатель на метод класса C++
Шаблон класса двусвязного списка, метод, возвращающий указатель C++
Как сделать указатель/ссылку на метод конкретного экземпляра класса C++
Указатель на this в конструкторе класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
10.03.2014, 14:45     Указатель на метод класса #9
Arkaniy, я понял что тебе нужно и направил по прямой дороге. Все, что ты хочешь, есть в этих строках. Почему несостоятелен твой пример ты тоже поймешь по дороге, в крайнем случае вернешься и спросишь
Для всех этих понятий есть статьи на русском в википедии. Предлагаю начать оттуда. Остальные ссылки есть в примечаниях к статьям.
Yandex
Объявления
10.03.2014, 14:45     Указатель на метод класса
Ответ Создать тему
Опции темы

Текущее время: 05:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru