📅  最后修改于: 2023-12-03 15:29:51.363000             🧑  作者: Mango
在C++的STL(Standard Template Library)中,多集(multiset)是一个非常有用的数据结构,在其中使用begin()和end()函数是必不可少的。在本文中,我们将介绍这两个函数的基本用法和如何在实际代码中使用。
C++ STL中的多集是一个有序容器,它类似于set,但是可以存储多个相同的元素。元素按照一定的顺序从小到大排序,所以可以使用begin()和end()函数访问多集中的元素。由于多集可以存储多个相同的元素,因此也可以用于对元素进行排序并统计它们的出现次数。
begin()函数返回指向多集中第一个元素的迭代器,而end()函数返回一个指向多集末尾后面一个位置(即最后一个元素之后的位置)的迭代器。
下面是一段使用begin()和end()函数来访问多集中的元素的代码片段:
#include <iostream>
#include <set>
int main()
{
std::multiset<int> ms = {1, 2, 2, 3, 3, 3};
for (auto it = ms.begin(); it != ms.end(); ++it)
{
std::cout << *it << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
1 2 2 3 3 3
从上面的代码片段中可以看出,我们使用了一个名为ms的multiset,其中存储了1、2、2、3、3、3这六个元素,然后使用了一个for循环来遍历ms中的所有元素,并使用std::cout打印出来。在for循环中,我们使用了ms.begin()和ms.end()来返回多集中第一个元素和最后一个元素之后的位置的迭代器,然后使用++it来将迭代器往后移动,并打印出每个元素的值。
在实际编程中,多集可以用于对元素进行排序并统计它们的出现次数。下面是一个使用多集来计算字符串中所有字符出现次数的代码片段:
#include <iostream>
#include <string>
#include <map>
int main()
{
std::string str = "hello world";
std::multiset<char> ms(str.begin(), str.end());
std::map<char, int> mp;
for (auto it = ms.begin(); it != ms.end(); ++it)
{
mp[*it]++;
}
for (auto it = mp.begin(); it != mp.end(); ++it)
{
std::cout << it->first << " occurs " << it->second << " times." << std::endl;
}
return 0;
}
输出结果为:
occurs 1 times.
d occurs 1 times.
e occurs 1 times.
h occurs 1 times.
l occurs 3 times.
o occurs 2 times.
r occurs 1 times.
w occurs 1 times.
从上面的代码中可以看出,我们使用了一个std::string变量str存储了一个字符串,然后将它转化为一个多集,并使用一个std::map映射记录每个字符出现的次数。在遍历多集的过程中,我们将每个字符出现的次数记录在std::map中,最终使用std::cout打印出每个字符出现的次数。
在本文中,我们介绍了C++ STL中的多集和begin()以及end()函数的用法,并且通过实例讲解了如何在实际代码中使用它们。多集是一个非常有用的容器,它不仅可以用于对元素进行排序,还可以对元素进行统计,相信在日常编程中,它们一定会给你带来很多便利。