📜  C++ STL中的map :: begin()和end()(1)

📅  最后修改于: 2023-12-03 14:39:51.964000             🧑  作者: Mango

C++ STL中的map::begin()和end()

在 C++ STL 中,map 是一种关联容器,对应键值对 (key-value pair) 存储。

map::begin()map::end()map 的两个迭代器,分别指向该容器起始位置和终止位置。使用这两个迭代器可以遍历 map 中的所有键值对。

map::begin()

map::begin() 返回指向 map 容器中第一个元素的迭代器。

iterator begin() noexcept;
const_iterator begin() const noexcept;

其中,iteratorconst_iterator 都是迭代器类型,可以通过 auto 关键字自动推断类型。

使用 begin() 遍历 map 中的所有键值对时,需要使用迭代器的 ++ 运算符逐步向后遍历,直到遍历完所有元素。

例如,以下代码输出 map 中的每个键值对:

#include <iostream>
#include <map>

int main()
{
    std::map<std::string, int> map = {{"apple", 3}, {"banana", 7}, {"cherry", 5}};

    for (auto iter = map.begin(); iter != map.end(); ++iter)
    {
        std::cout << iter->first << ": " << iter->second << std::endl;
    }

    return 0;
}

输出结果为:

apple: 3
banana: 7
cherry: 5
map::end()

map::end() 返回指向 map 容器中最后一个元素的下一个位置的迭代器。

iterator end() noexcept;
const_iterator end() const noexcept;

使用 end() 配合 begin() 可以遍历 map 中的所有键值对。通常使用 for 循环或 while 循环遍历 map,例如:

for (auto iter = map.begin(); iter != map.end(); ++iter)
{
    // 遍历操作
}

auto iter = map.begin();
while (iter != map.end())
{
    // 遍历操作
    ++iter;
}

遍历 map 时,需要注意使用 const 修饰迭代器类型,以防止修改容器中的元素。

总的来说,map::begin()map::end() 是遍历 map 容器的利器,尤其是在需要对 map 中的元素进行排序和查找时尤为重要。