# std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::begin, std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>::cbegin

< cpp‎ | container‎ | unordered multimap

iterator begin() noexcept; |  | (C++11 起)
const_iterator begin() const noexcept; |  | (C++11 起)
const_iterator cbegin() const noexcept; |  | (C++11 起)

返回指向 `unordered_multimap` 首元素的迭代器。

若 `unordered_multimap` 为空，则返回的迭代器将等于 end() 。

### 参数

（无）

### 返回值

指向首元素的迭代器。

### 复杂度

常数。

### 示例

    #include <unordered_map>
    #include <algorithm>
    #include <cassert>
    #include <iostream>
    #include <string>
    #include <utility>

    int main()
    {
        auto show_node = [](const std::pair<std::string, std::string>& node) {
            std::cout << node.first << "  :  " << node.second << '\n';
        };

        std::unordered_multimap<std::string, std::string> lemmas;
        assert(lemmas.begin() == lemmas.end());   // OK
        assert(lemmas.cbegin() == lemmas.cend()); // OK

        lemmas.insert({ "1. ∀x ∈ N ∃y ∈ N", "x ≤ y" });
        show_node(*lemmas.cbegin());
        assert(lemmas.begin() != lemmas.end());   // OK
        assert(lemmas.cbegin() != lemmas.cend()); // OK
        lemmas.begin()->second = "x < y";
        show_node(*lemmas.cbegin());

        lemmas.insert({ "2. ∀x,y ∈ N", "x = y V x ≠ y" });
        show_node(*lemmas.cbegin());

        lemmas.insert({ "3. ∀x ∈ N ∃y ∈ N", "y = x + 1" });
        show_node(*lemmas.cbegin());

        std::cout << "lemmas: \n";
        std::for_each(lemmas.cbegin(), lemmas.cend(),
            [&](const auto& n) { show_node(n); });
        std::cout << "\n";
    }

可能的输出：

    1. ∀x ∈ N ∃y ∈ N  :  x ≤ y
    1. ∀x ∈ N ∃y ∈ N  :  x < y
    2. ∀x,y ∈ N  :  x = y V x ≠ y
    3. ∀x ∈ N ∃y ∈ N  :  y = x + 1
    lemmas:
    3. ∀x ∈ N ∃y ∈ N  :  y = x + 1
    1. ∀x ∈ N ∃y ∈ N  :  x < y
    2. ∀x,y ∈ N  :  x = y V x ≠ y

### 参阅

end cend (C++11) | 返回指向末尾的迭代器 (公开成员函数)