Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;对multiset::equal_range给出的值的操作_C++_Multiset_Equal Range - Fatal编程技术网

C++ C++;对multiset::equal_range给出的值的操作

C++ C++;对multiset::equal_range给出的值的操作,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); }

我试图编写一个程序,从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;
srand(时间(空));
多集M//包含1000个从0到9的随机数的多集
对于(int i=0;i<1000;i++){
r、 插入(rand()%10);
s、 插入(rand()%10);
}
向量R(10)//存储每个数字出现次数的向量
//(因此R[0]等于0出现的次数,依此类推)
对零=M.equal_范围(0);
R[0]=0.second-0.first;
问题是在最后一行(我试图计算0出现的次数),它在减号下面加了下划线,表示没有运算符与这些操作数匹配。但是为什么呢?车厢的第一端和第二端不是零吗?如何修复它


编辑:我必须使用多集、向量和等距,这些是我的老师选择的,不是我。

使用地图会容易得多:

std::map<int, int> counts;
...
count[num]++; // map::operator[] will insert the value if it's not already in the sequence.
std::map计数;
...
计数[num]+;//如果该值不在序列中,则map::operator[]将插入该值。

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

为什么不使用map而不是multiset?@不可计算,因为这是我的老师为这项任务选择的,我实际上没有任何单词。请将std::distance而不是减号。把第一个放在第一位。“不可计算的非常感谢,这就是我一直在寻找的。Ania请考虑接受”DrMrbe的回答,这将表明它确实解决了这个问题。此外,powodzenia na UW“使用[…]会更容易”并没有回答问题,提供了一个差或次优方法的替代方案,可以补充已经完整的答案。不幸的是,这不是完整的银行你很多,我测试了它,它的作品,我会使用它。太棒了!你能投票支持我的回答吗?我需要一些分数:)