Например,
struct MyStruct
{
MyStruct* myStruct;
};
MyStruct a;
MyStruct b;
a.myStruct = &b;
b.myStruct = &a;
std::list<MyStruct> myList;
myList.push_back(a);
MyStruct* listA = &myList.back();
myList.push_back(b);
MyStruct* listB = &myList.back();
&a
и listA
- одно и то же? Будет ли a.myStruct
по-прежнему работать как указатель на b
? Будет ли a.myStruct
работать как указатель на b
внутри списка?
Создает ли добавление объекта в список копию объекта или сохраняет исходный объект в памяти и просто использует ссылку на него ?
Насколько я понимаю, список реализован как двусвязный список, поэтому ему не нужно копировать или перемещать исходный объект, но я не уверен, так ли это на самом деле.