如何“引用”调用迭代器的对象

时间:2016-04-18 12:48:30

标签: c++ const-iterator

我有一个类myTest,它实现了一个带有一组元素的数组,另一个数组带有元素的occorrences。 示例:如果用户插入此输入:{2,5,76,76},我已实例化array[]= {2,5,76}, occurrences[]= {1,1,2}.

然后我有一个随机访问迭代器,现在当我用迭代器打印出我的数组时,我获得了这个控制台输出"2,5,76",在控制台中写入了我的数组的所有元素,我怎样才能获得迭代器打印出我的数组来计算这些数据?我想要一个这样的打印输出:"2,5,76,76",所以我应该修改我的迭代器以获得我想要的东西?

2 个答案:

答案 0 :(得分:0)

你的意思是:

vector<int> elements;
vector<int> times;

for (int i=0; i<input.size(); i++) {
    const int idx =  std::find(elements.begin(), elements.end(), input[i]) - elements.begin(); // you asked about this line?
    if (idx >= 0 && idx < times.size())
        ++times[idx];
    else {
        elements.push_back(input[i]);
        times.push_back(1);
    }
}

答案 1 :(得分:0)

如果您不关心原始数组中元素的顺序,最好切换到std::mapstd::unordered_map并使用元素作为键,元素计为val:{{ 1}}在Perl语法中。 或者,定义您自己的迭代器类:

{2 => 1, 5 => 1, 76 => 2}

或者只使用索引而不是迭代器。