繁体   English   中英

遍历类中的不同集合类型

[英]Iterate over different collection types in a class

class MyClass {
    std::vector<int> vi;
    std::vector<string> vs; 
}

我想用一个迭代器遍历MyClass所有集合,即遍历所有vi,然后遍历所有vs. vsvi没有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! :(
}

由于集合中的类型不同(示例中为int),我什至不确定如何考虑MyClassIterator的设计。

编辑:只是为了澄清,这是我遇到的编程问题。 我无法提出任何明智/优雅的建议,因此我想在这里提出。

您可以将迭代器的值类型设为类似Boost Variant的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM