我正在尝试编写一个程序,从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出现的次数),它强调减去并表示没有运算符匹配这些操作数。但为什么?隔间不是零。第一和零。第二端?以及如何解决它?
编辑:我必须使用multiset,vector和equal_range,这些是我老师选择的内容,而不是我。
答案 0 :(得分:4)
使用distance(zero.first, zero.second)
。 -
运算符不能应用于多集迭代器。
答案 1 :(得分:-1)
使用地图会更容易:
std::map<int, int> counts;
...
count[num]++; // map::operator[] will insert the value if it's not already in the sequence.