gpt4 book ai didi

c++ - public: typedef other_class::const_iterator my_class::const_iterator - 可以接受吗?

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

我正在寻找一种将 std::set::const_iterator 用作我自己的类的 const_iterator 的方法。

我的代码(实际上行为正确并且编译良好)如下:

class MyClass{

public:
typedef std::set<T>::const_iterator const_iterator;

const_iterator begin() const {
return mySet->begin();
}

const_iterator end() const {
return mySet->end();
}

}; // MyClass

所以,我的问题是:我使用 const_iterator 的方式是否可以接受并且是否符合 STL 预期的形式?

编辑:相关问答在How to typedef the iterator of a nested container?

最佳答案

拥有内部类型的想法是,通用代码可以在事先不知道实现的情况下使用您的类。重点是有一个const_iterator ,并且它具有常量迭代器的语义。您从内部类型借用迭代器这一事实只是一个调用代码不应该关心的实现细节。

也就是说,问题是没有定义 const_iterator内部类型,因为这会增加用户代码中的耦合,他们必须在其中使用 std::set<T>::const_iterator明确地,这反过来又使成员的类型成为接口(interface)的一部分(即,您不能再在不破坏用户代码的情况下更改成员的实现)。

关于c++ - public: typedef other_class::const_iterator my_class::const_iterator - 可以接受吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351074/

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