gpt4 book ai didi

c++ - 在不键入整个容器定义的情况下引用迭代器类型名称的有效方法?

转载 作者:搜寻专家 更新时间:2023-10-31 00:40:26 24 4
gpt4 key购买 nike

有没有比键入更有效的方法来引用容器迭代器的类型名

std::unordered_map<keyclass, valueclass>::iterator 

每次我都需要迭代器?

当然有

typedef boost::unordered_map<keyclass, valueclass>::iterator classitr

但是为每个容器引入 typedef 并没有让我觉得代码可读性很好。作为 C++ 的新手,并假设通常有对他们想要使用的容器的引用 - 是否有类似

的东西
Container<KeyClass, ValueClass> x;

x::iterator_type i

或者我缺少的任何其他明显的快捷方式?

最佳答案

这就是为什么 C++11 引入了 auto 关键字新含义的原因之一:

auto it = vec.begin();

编译器将以类似于模板类型推导的方式从初始化程序中计算出的类型。

在 C++11 之前,通常的方法是按照您的建议使用 typedeftypedef 容器然后给出与之相关的所有内容通常是最有用的:

typedef std::unordered_map<key, value> map;
map m;
map::iterator = m.begin();

您可以为您的 typedef 起一个更有意义的名称,准确描述它是什么类型的 map。例如,如果您有一个从姓名到电话号码的映射,您可以将其命名为 phone_map,迭代器将是 phone_map::iterator

auto也是完美转发的好用工具

关于c++ - 在不键入整个容器定义的情况下引用迭代器类型名称的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750487/

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