Ответ
 
Опции вопроса Поиск в этом вопросе Опции просмотра
  #1  
Старый 28.09.2011, 14:50
Аватар для Guest
Guest
Вопрос
Сообщений: n/a
По умолчанию

Добрый деньПомещаю элемент в контейнер, могу ли я после этого использовать адрес помещенного элемента? Пример (популярная ошибка):КодC++ (Qt)QVector vec;vec.push_back(123);int * myPtr = &vec.back();myPtr будет валиден до следующего добавления/удаления в/из вектора, потом может быть валиден или нет и когда - зависит от реализации. То есть для std::vector (QVector) общий ответ "нет, не могу". Для std::list ответ "могу". Для QList "могу если sizeof(T) > sizeof(void *)". Но я затрудняюcь ответить для std::set, std::map, QMap и многих других. Конечно я всегда могу хранить указатели в value - но это лишние движения. Да и расходы на перемещение могут быть значительны (если value приличная структура). Есть ли какой-то общий принцип/способ определить?Спасибо
Ответить с цитированием
Ответ



Похожие вопросы
Тема Автор Раздел Ответов Последний вопрос или ответ
каких специалистов сейчас не хватает в России ? Где можно узнать правдивые статистические данные по этому поводу? Guest Второй архив вопросов и ответов 0 27.01.2012 12:49
Как в Firefox 4 удалить сохранённые данные форм и в данные, введённые в поиск? Guest Продолжение архива вопросов 0 27.09.2011 20:02



© www.otvetnemail.ru - Форум вопросов и ответов.