我有一个类myTest,它实现了一个带有一组元素的数组,另一个数组带有元素的occorrences。
示例:如果用户插入此输入:{2,5,76,76}
,我已实例化array[]= {2,5,76}, occurrences[]= {1,1,2}.
然后我有一个随机访问迭代器,现在当我用迭代器打印出我的数组时,我获得了这个控制台输出"2,5,76"
,在控制台中写入了我的数组的所有元素,我怎样才能获得迭代器打印出我的数组来计算这些数据?我想要一个这样的打印输出:"2,5,76,76"
,所以我应该修改我的迭代器以获得我想要的东西?
答案 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::map
或std::unordered_map
并使用元素作为键,元素计为val:{{ 1}}在Perl语法中。
或者,定义您自己的迭代器类:
{2 => 1, 5 => 1, 76 => 2}
或者只使用索引而不是迭代器。