循环访问类中的不同集合类型
Iterate over different collection types in a class
class MyClass {
std::vector<int> vi;
std::vector<string> vs;
}
我想使用单个迭代器遍历MyClass
中的所有集合,即遍历所有 vi,然后遍历所有 vs。 vs
和 vi
没有 1:1 的关系(所以我不能使用基于元组的迭代方法)。这是我遇到的一个编程问题。
迭代器设计模式适用于相同类型的集合,从内部表示中抽象出访问。它的界面对于这个问题来说是一个有用的东西,但是集合之间的类型差异让我很难过。
我喜欢从使用的角度来看待这个问题。
MyClass mc;
... // push elements into mc
for( MyClassIterator it = mc.begin();
it != mc.end();
it++)
{
// *it can be either an int or a string
// operator * for the iterator cannot return a common type! :(
}
我什至不确定如何考虑MyClassIterator的设计,因为集合中的类型不同(示例中的int,字符串)。
编辑:澄清一下,这是我遇到的一个编程问题。我想不出任何明智/优雅的东西,因此我在SO上问它。
您可以将迭代器的值类型设置为类似 Boost 变体的变体。
相关文章:
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 查询数据库以在 C++ 中创建自定义类集合的最佳方法
- 如何读写Qt集合类
- 大三实现在一个集合类
- Kotlin 从文件加载类的集合?
- 创建集合向量作为类成员会在 c++ 中给出错误
- 如何重新分配(也称为集合)unique_ptr类成员?
- 我可以按类类型访问哪些类型的集合,并在必要时返回未找到
- 一个类用于集合和字典 (map)
- 使用模板化运算符输出集合集合<<
- 创建一个抽象类类型的集合,shared_ptr的抽象类向量
- 异质集合调用派生类函数 c++
- C 集合构建器中类成员数组的2D数组大小
- CMAKE GOOGLETEST在集合集合中会重新定义错误
- 实例化与unique_ptr的类集合成员
- 集合元素类中定义的集合的比较器
- 在C++中,如何最好地解耦两个必须维护彼此引用集合的类
- 如何正确重载运算符<<对于具有嵌套私有类集合的类?
- 一个通用的集合运算类,即交集、并集、减号等