C++ STL中的multiset cbegin()和cend()函数

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容器。在示例中,我们定义了一个名为myMultisetmultiset<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来执行许多其他操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程