C++ 对 multiset::equal_range 给定值的操作

标签 c++ multiset equal-range

我正在尝试编写一个程序,从 0 到 9 中取 1000 个随机数,然后计算每个数字出现的次数:

    srand(time(NULL));
    multiset<int> M;//multiset that contains 1000 random numbers from 0 to 9
    for (int i = 0; i < 1000; i++){
        r.insert(rand() % 10);
        s.insert(rand() % 10);
    }

    vector <int> R(10);//vector that stores how many times each number appeared 
    //(so R[0] equals how many times 0 appeared and so on)

    pair<multiset<int>::iterator, multiset<int>::iterator> zero = M.equal_range(0);
    R[0] = zero.second - zero.first;

问题出在最后一行(我试图计算 0 出现的次数),它在减号下划线并表示没有运算符匹配这些操作数。但为什么?隔间的 zero.first 和 zero.second 端不是吗?以及如何解决?

编辑:我必须使用 multiset、vector 和 equal_range,这些是我老师选的东西,不是我选的。

最佳答案

使用distance(zero.first, zero.second)- 运算符不能应用于多集迭代器。

关于C++ 对 multiset::equal_range 给定值的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47876348/

相关文章:

C++ malloc 从 `void*' 到 struct 的无效转换

c++ - 避免使用 alpha 值为 0 的深度缓冲区写入

c++ - 尝试返回 boolean 值时程序崩溃

c++ - C++ 中多重集的自定义 [] 访问

c++ - 如何在 multimap 中按排序顺序打印键的值

c++ - 我们真的需要在仿函数中对operator()进行两次重载吗?

c++ - 为什么不自动确定类模板构造函数参数?

c++ - 尝试在多集中插入元素时发生C++ 11编译错误

c++ - equal_range 应该如何工作?

c++ - 不工作 : override the default less-than operator of shared_ptr of a class