Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Новый архив 3 (https://www.otvetnemail.ru/novyj-arhiv-3-813/)
-   -   В каких контейнерах данные перемещаемы ? (https://www.otvetnemail.ru/novyj-arhiv-3-813/v-kakih-kontejnerah-dannye-peremeshaemy-254930/)

Guest 28.09.2011 14:50

В каких контейнерах данные перемещаемы ?
 
Добрый деньПомещаю элемент в контейнер, могу ли я после этого использовать адрес помещенного элемента? Пример (популярная ошибка):Код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 приличная структура). Есть ли какой-то общий принцип/способ определить?Спасибо


Часовой пояс GMT, время: 08:10.


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