如何(深)复制const对象的地图

ope*_*as2 3 c++ stl const map deep-copy

我有另一个问题,我似乎无法解决......,或在这个网站上找到...

我有一个带有地图的对象(称为DataObject),声明如下:

std::map<size_t, DataElement*> dataElements;
Run Code Online (Sandbox Code Playgroud)

现在我有一个复制功能(在复制构造函数中使用):

void DataObject::copy(DataObject const &other) {

    //here some code to clean up the old data in this object...

    //copy all the elements:
    size = other.getSize();
    for(size_t i = 0; i < size; ++i) {
            DataElement* dat = new DataElement(*other.dataElements[i]);
            dataElements[i] = dat;
    }

}
Run Code Online (Sandbox Code Playgroud)

这不能编译,因为在const对象上不能使用dataElements [i].如何对const对象拥有的地图中的所有元素进行深层复制?

我知道在const映射上可以使用find()函数,但是如何获取我想要复制的实际对象?

Ben*_*ley 8

std::map<size_t, DataElement*>::const_iterator it = other.dataElements.begin();
while(it != other.dataElements.end())
{
    dataElements[it->first] = new DataElement(*(it->second));
    ++it;
}
Run Code Online (Sandbox Code Playgroud)

我几乎肯定这应该有效.