C++ STL中的multiset cbegin()和cend()函数
在C++标准库中,multiset
是一个很有用的容器,它允许插入相同的元素并自动排序。当需要处理具有相同值的元素时,它比set
更具有优势。
multiset
可用于存储元素的排序列表,这些列表中的元素可以存在重复。以下是该容器的实现示例代码:
#include <iostream>
#include <set>
#include <string>
int main() {
std::multiset<std::string> myMultiset{"apple", "banana", "banana", "grape", "pear", "pear", "pear"};
for (const auto& el : myMultiset) {
std::cout << el << ' ';
}
std::cout << '\n';
return 0;
}
刚开始,我们需要使用头文件<set>
引入multiset容器。在示例中,我们定义了一个名为myMultiset
的multiset<string>
对象。我们将以下字符串添加到myMultiset
中:apple, banana, banana, grape, pear, pear和pear。这个multiset
将首先按字母顺序排序,然后将具有相同的值的元素存储在一起。
cbegin()和cend()函数简介
cbegin()
和cend()
是multiset
的成员函数,作用是返回一个指向容器中第一个和最后一个元素的迭代器,并且它们是常量迭代器,不能用来更改对应元素的值。这对于需要依次处理元素的情况非常有用。此外,它们可以用来检查multiset
的范围是否为空。
现在,我们将使用cbegin()
和cend()
函数遍历multiset
并输出所有元素。以下是示例代码:
#include <iostream>
#include <set>
#include <string>
int main() {
std::multiset<std::string> myMultiset{"apple", "banana", "banana", "grape", "pear", "pear", "pear"};
std::cout << "All elements in myMultiset: ";
for (auto it = myMultiset.cbegin(); it != myMultiset.cend(); ++it) {
std::cout << *it << ' ';
}
std::cout << '\n';
return 0;
}
在这个示例中,我们在multiset
对象的cbegin()
和 cend()
函数返回的迭代器之间使用了一个for
循环。我们将变量it
设置为迭代器的值,然后使用*it
输出元素的值。注意,在这个循环中我们使用了cbegin()
和 cend()
,而不是begin()
和 end()
函数。这个区别是因为我们想要访问element
容器的值而不修改它们,所以我们使用const_iterator
,将返回一个常量迭代器。
现在我们就可以编译并运行这个程序,输出结果为:
All elements in myMultiset: apple banana banana grape pear pear pear
正如我们所看到的,我们已经成功地从multiset
中遍历了所有元素并输出了它们的值。
结论
multiset
是很有用且功能强大的C++容器,它可以用于许多不同的用途。这篇文章带给我们了一个基本的了解——如何遍历multiset
容器中所有元素。我们学习了cbegin()
和cend()
函数如何使用以及它们所返回的迭代器如何工作。根据您的具体需求,您可以使用multiset
来执行许多其他操作。