如何在C++中存储对 stl 容器元素的指针/迭代器引用
How to store pointer / iterator reference to stl container element in C++?
>我正在设计一个图类,我想基于邻接列表。该类内部有一个数据结构:
std::unordered_map<Node,std::list<??>,NodeHash,NodeEqual> map;
而不是??
,我想要指向存储在列表中的 Node 元素的指针或指向它的某个迭代器。
我是C++新手。我应该怎么做?
如何从unordered_map获取指向现有密钥节点的指针?
找到具有该键的元素,获取该元素的first
成员的地址。
std::unordered_map<Node,std::list<Node*>,NodeHash,NodeEqual> map;
Node node1;
(void) map[node1]; // add { node1, {} } to the map
...
auto iter = map.find(node1);
if (iter != map.end())
{
Node* n = &iter->first;
Node node2;
map[node2].push_back(n);
}
这里n
是一个指向等于 node1
的现有键的指针。
这
适用于ideone
;我不知道它是否便携。
struct M;
typedef std::unordered_map<Node, std::list<M>, NodeHash, NodeEqual> mymap;
struct M { mymap::iterator x; };
不幸的是,M
并不是mymap
的迭代器,但它非常接近。
(如果我尝试同样的技巧来使M
成为std::list<mymap::iterator>
的包装器,ideone
抱怨)
相关文章:
- 调整大小后指向元素值的指针unordered_map有效?
- 当该数组的索引中没有元素时,指针指向什么?
- 如何在基类指针向量的元素上应用重载的多态函数
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 删除指针数组 (C++) 中的元素
- 从指向结构数组的指针中提取元素
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 获取指向指针的指针元素 (c++)
- 经过最后一个数组元素末尾的指针是否应该等于超过整个数组末尾的指针?
- 存储指向动态数组元素的指针
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- 如何使用指针C++将元素从2D数组复制到1D数组
- 如何将元素插入到标准::地图的共享指针中?
- C++通过别名指针以静默方式将错误的类型分配给数组元素
- 在删除之前更新一组元素指针中的元素
- 从 BST 中删除元素(指针错误)
- 避免强制转换容器的元素指针类型
- 填充一个无序的vector元素指针队列
- OpenCV元素指针如何存在于Obj-C类中