gpt4 book ai didi

C++:如何从定义的容器对象中获取迭代器类型

转载 作者:搜寻专家 更新时间:2023-10-30 23:53:34 25 4
gpt4 key购买 nike

我有一个表单代码:

unordered_set<pair<int,int>,CustomHash> Edges;
typedef unordered_set<pair<int,int>,CustomHash>::iterator EdgesIt;
...
for(auto it=Edges.begin();it!=Edges.end();it++){
list<EdgesIt> List;
}

等我怎样才能避免定义一个新的类型 EdgesIt 用于 List 声明并以更智能的方式获取它,例如:

list<Edges::iterator_type> List;

InteliSense 仅建议 Edges::iterator定义为 typedef std::iterator pair<int,int> iterator .多说一句,行不通。我也尝试使用 unordered_set::iterator , 但它也不起作用。

最佳答案

Edges是对象的名称,而不是类的名称。你无法获得嵌套的 typedef直接从它喜欢 Edges::iterator .

您可以使用 decltype (C++11 起) 以获得你想要的类型(即 unordered_set<pair<int,int>,CustomHash> )。

list<decltype(Edges)::iterator> List; 
// same as list<unordered_set<pair<int,int>,CustomHash>::iterator> List;

关于C++:如何从定义的容器对象中获取迭代器类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com