繁体   English   中英

C ++地图元素插入

[英]c++ map element insertion

我想在地图中插入一个指向对象的指针。 这是正确的方法吗?

object myobject[10];
....
mymap.insert( std::pair<int,object*>(pktctr, &myobject[pktctr]));

这是正确的方法吗?

是的,尽管使用make_pair可能会更好:

mymap.insert(std::make_pair(pktctr, &myobject[pktctr]));

或C ++ 11语法:

mymap.insert({pktctr, &myobject[pktctr]});

唯一的危险是,必须在销毁myobject之前确保删除了指针或销毁了映射(或者至少确保在此之后永远不要使用指针)。 否则,您将有一个悬而未决的指针和大量等待发生的错误。

只要满足以下条件之一,这将起作用并且是正确的(即不会导致未定义的行为):

  • mymapmyobject具有相同的生存期(它们在相同的作用域中声明):然后,您将确定映射比数组长
  • 指针在myobject生命周期结束之前被删除(然后,您将拥有悬空的指针,指向不再存在的指针)

确保pktctr永远不会超出数组的末尾。

最后,此语法也将起作用:

mymap[pktctr] = &myobject[pktctr];

编辑:

实际上,在销毁myobject之前,我正在清除析构函数中的地图。

那么您不应该有任何悬而未决的指针问题AFAIK。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM