作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在寻找一种将 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 预期的形式?
最佳答案
拥有内部类型的想法是,通用代码可以在事先不知道实现的情况下使用您的类。重点是有一个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/
我正在寻找一种将 std::set::const_iterator 用作我自己的类的 const_iterator 的方法。 我的代码(实际上行为正确并且编译良好)如下: class MyClass{
我是一名优秀的程序员,十分优秀!