|
|
|
Можно ли для стд::вектор'а взять адрес и-го элемента?27.11.2014, 19:09. Показов 9168. Ответов 43
Метки нет (Все метки)
Допустим, есть код на Си:
C int a[10000]; __builtin_prefetch (&a[1000]); /* тут идёт обработка первых 1000 элементов массива [0 - 999] */ __builtin_prefetch (&a[2000]); /* тут идёт обработка первых 1000 элементов массива [1000 - 1999] */ /* и так далее */ Теперь берём код на Си:: C++ std::vector<int> a (10000);
0
|
|
| 27.11.2014, 19:09 | |
|
Ответы с готовыми решениями:
43
как получить адрес элемента вектора посредством g++?
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 28.11.2014, 20:00 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 28.11.2014, 23:26 | ||
|
Если бы вы курили шаблоны, я мог бы показать на что способен компилятор не зная адреса, но зная имя. В то же время, если функция имеет дело с указателем - будь добра проверить его.
0
|
||
|
Комп_Оратор)
|
||
| 29.11.2014, 01:04 | ||
![]() Можно бы подлить масла заявлением вроде: "Ссылка в С++ это хорошо ![]() Я для примера, просто. Есть языки, где практически всё на ссылках и ссылки значительно развитее и там передача по ссылке это основной путь. Для того, чтобы иметь проблемы с пониманием ссылок, нужно сначала проникнуться передачей по значению, как основным способом, а потом столкнуться с передачей по ссылке. Передача по указателю, кстати, во многих источниках называется передачей по ссылке и это даёт ещё больше уверенности говорить о том, что ссылки и указатели имеют сходную семантику при передаче. А указывать в вектор достаточно острая процедура. Нужно же быть уверенным, что не произойдёт реалок для него. По идее можно выделить память сразу и запретить реалок применяя функцию-член reserve. Evg, Вам ( и мне тоже ) по душе этот автор и ресурс: http://alenacpp.blogspot.com/2... or_30.html ![]() По сути итераторы это же и есть отслеживающие дескрипторы для вектора и их смысл в том, чтобы сохранять валидность и не давать доступа к физическим адресам. Тем не менее и они не сохраняют валидность при целом ряде операций, таких как вставка например. Поэтому пользоваться адресами на память внутри вектора наверное можно, но нужно иметь хорошую память. Тут не имею достаточно опыта, чтобы утверждать. Самому интересно.
0
|
||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 29.11.2014, 12:18 | ||
|
0
|
||
|
|
||
| 29.11.2014, 12:22 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
||||
| 29.11.2014, 12:36 | ||||
|
Вообще, чтобы нормально поспорить нужно сказать, что Вы не согласны с: Вопрос возник там где оператор [] возвращает сущность - ссылку и появилось желание разобраться, а что это. Я бы сказал (если бы у меня были мозги)), что имя переменной возвращает ссылку. Объявления нового имени ссылкой, даёт возможность получить эту ссылку по этому новому имени. Это и есть решающий довод в пользу того, что ссылка уже должна существовать до объявления. Хотя могло быть и по другому. Указатель например, можно объявить и инициализировать в 2 этапа, а у ссылки такой возможности нет и это определило многие "фичи". У индексного выражения a[] доступа к элементу массива/vector'а вызывающего оператор [] нет имени, но есть все его свойства и в левой и в правой части и следовательно оно возвращает ссылку.
0
|
||||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.11.2014, 12:38 | |
|
0
|
|
|
Комп_Оратор)
|
|||
| 29.11.2014, 12:49 | |||
![]() Ну то есть на интервале, где пользуемся прямыми адресами не допускаем операций которые поднимут его на реалок. Правильно я понимаю? А поскольку вектор делает это сам, то память нужна, особенно, хорошая. Не серчайте за дикие речи, но пишу как сочиняется. На ходу. ![]() Добавлено через 2 минуты
0
|
|||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.11.2014, 12:55 | |
|
0
|
|
|
|
||
| 29.11.2014, 13:00 [ТС] | ||
|
0
|
||
|
Комп_Оратор)
|
|||||
| 29.11.2014, 13:13 | |||||
|
Не по теме:
Добавлено через 4 минуты
0
|
|||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 29.11.2014, 13:16 | |
|
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.11.2014, 13:18 | |
|
0
|
|
|
|
|
| 29.11.2014, 13:20 | |
|
Evg, вопрос не по теме, префетчинг реально дает что-нибудь? Я года 3 назад эксперементировал с ним и результат был такой - толку от него на интелах особо нет. Но в linux'е можно отключать хардварный префетчинг через командную строку и вот если его отключить, то программным префетчингом можно ускорить код до 100% (смотрел perf'ом, кол-во кэшмиссов реально в разы уменьшается). Но с включенным хардварным префетчингом (который всегда включен) уменьшения кэшмиссов я так и не добился.
0
|
|
|
|
|||
| 29.11.2014, 13:23 [ТС] | |||
|
0
|
|||
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.11.2014, 13:33 | |
|
Я решал системы тысяч по семнадцать уравнений. Много медленнее рассчётного времени.
0
|
|
| 29.11.2014, 14:37 | |
|
0
|
|
|
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 29.11.2014, 15:55 | |
|
А я на чём? На самолёте?
0
|
|
| 29.11.2014, 15:55 | |
|
Где можно взять ftp-компонент, для того чтобы можно было закачивать со своего скрипта на фтп-сервак файлы?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы.
Карта этого меню приложена ниже.
Нужный пункт выделен красным.
Сервис
Настройки
Поведение
|
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки.
Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён".
Изменено отображение буквы Й.
Добавлена. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|