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

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

Восстановить пароль Регистрация
 
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 452
09.03.2014, 23:51     Указатель на метод класса #1
Доброго времени суток, форумчане.
Необходимо получить указатель на размер вектора.
Делаю из соображений быстродействия, т.к. каждый раз обращаться через оператор точки будет долго.
Возможно я не прав. Просто думается, что обращаться напрямую через указатель быстрее нежели через класс. Искал много и даже находил решения моей проблемы, но вообще не понимаю как делать и как должно работать. Прошу помощи знающих и объяснения "для чайников".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SharpDeveloper
92 / 103 / 7
Регистрация: 16.02.2012
Сообщений: 307
10.03.2014, 00:58     Указатель на метод класса #2
Скорее всего вы не правы. При вызове через указатель на функцию класса компилятор сгенерирует почти такой-же по производительности код, имхо.
Как должно работать: http://msdn.microsoft.com/en-us/library/k8336763.aspx
alsav22
5282 / 4801 / 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
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
10.03.2014, 04:51     Указатель на метод класса #4
Цитата Сообщение от Arkaniy Посмотреть сообщение
Просто думается, что обращаться напрямую через указатель быстрее нежели через класс.
Нет.
DrOffset
6457 / 3831 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
10.03.2014, 05:10     Указатель на метод класса #5
Цитата Сообщение от Arkaniy Посмотреть сообщение
Просто думается, что обращаться напрямую через указатель быстрее нежели через класс
Нет. Потому что указатель на метод, это не указатель на самом деле, а смещение. Обращение через него требует указатель на объект. Следовательно получится тоже самое.
И вообще не там ты оптимизировать затеял. Самая лучшая оптимизация - алгоритмическая. А все эти клевые шутки, которые мы можем сотворить с языком в коде, на самом деле мало что дают. Однако это не значит что надо писать как попало, просто надо писать без лишнего фанатизма.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 452
10.03.2014, 14:35  [ТС]     Указатель на метод класса #6
Спасибо всем отписавшимся, но я ,по-видимому, не верно поставил задачу
Из того, что вы ответили, я примерно понял как это работает, как получить указатель на метод и то, что мне нужно читать про аллокаторы. Но мне нужен указатель на возвращаемое значение.
Мне нужно что-то вроде этого
C++
1
int *nPoints = &Graph::pointsVector.size();
И опять же, возможно я снова заблуждаюсь о повышении скорости работы.
DrOffset
6457 / 3831 / 885
Регистрация: 30.01.2014
Сообщений: 6,627
10.03.2014, 14:37     Указатель на метод класса #7
Arkaniy, см. rvalue references и move semantics из нового стандарта. А так же почитай про RVO.
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 452
10.03.2014, 14:41  [ТС]     Указатель на метод класса #8
DrOffset, довольно лаконично. Но спасибо и на этом, буду искать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2014, 14:45     Указатель на метод класса
Еще ссылки по теме:

C++ Как передать указатель на функцию через метод класса ?
C++ Как получить значение из метода класса, если метод возвращает указатель?
C++ Как передать в метод класса Menu указатель на метод дочернего класса?

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

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

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