6

我正在尝试编写一个与 std::map 兼容的关联容器。为此,我必须创建一个插入方法,该方法以 std::pair 的形式接受一个新项目,其中第一个组件为 const 类型。例如:std::pair<const int, int> p

我遇到的问题是这样的对象不能分配给另一个对象。所以在我的 MapCompatibleContainer 的内部代码中,我无法将新对复制到私有变量(std::vector)。

我该如何解决这个问题?

谢谢

4

2 回答 2

3

正如您所说,您不能分配给 const 对象。

标准容器通过分配原始内存并就地构造对象来解决这个问题。复制构造仍然有效。

此外,关联容器将每个元素存储在单独的内存块中,以便以后不必复制它们。

于 2011-03-13T08:24:35.240 回答
0

<utility>标准库的部分中有一个辅助函数,其中包含一个std::make_pair函数。如果您使用它,您可以带上您的一对并执行以下操作:

foo.insert( std::make_pair( bar.first, bar.second ) );

我假设“foo”是您自己的与“map”兼容的对象的实现。

于 2011-03-12T21:17:00.527 回答