📅  最后修改于: 2023-12-03 15:13:56.547000             🧑  作者: Mango
在C++ STL中,multimap是一个关联容器,它类似于map,但允许多个元素具有相同的键值。multimap中的元素按键值自动排序,并且可以在logarithmic时间内插入、删除和搜索元素。
multimap的begin()和end()成员函数是用于获取multimap容器中第一个和最后一个元素的迭代器的函数,它们的使用非常方便。
multimap::begin()函数返回一个指向multimap容器中第一个元素的迭代器。如果multimap为空,则begin()函数返回与end()函数返回的迭代器相同的迭代器。
以下是multimap::begin()函数的语法:
multimap<Key, T, Compare, Alloc>::iterator multimap::begin() noexcept;
其中,Key是键类型,T是值类型,Compare是比较函数类型,Alloc是分配器类型。
以下是使用multimap::begin()函数的示例代码:
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMap{{1, "apple"}, {2, "banana"}, {2, "orange"}, {3, "pear"}};
for (auto it = myMap.begin(); it != myMap.end(); it++) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
输出:
1: apple
2: banana
2: orange
3: pear
multimap::end()函数返回一个指向multimap容器中最后一个元素的下一个元素的迭代器。通常情况下,end()函数返回尾后迭代器,用于表示遍历multimap容器的末尾。
以下是multimap::end()函数的语法:
multimap<Key, T, Compare, Alloc>::iterator multimap::end() noexcept;
以下是使用multimap::end()函数的示例代码:
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> myMap{{1, "apple"}, {2, "banana"}, {2, "orange"}, {3, "pear"}};
for (auto it = myMap.begin(); it != myMap.end(); it++) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
输出:
1: apple
2: banana
2: orange
3: pear
需要注意的是,end()函数返回的是尾后迭代器,因此不能对其进行解引用,否则会出现不可预测的结果。