STL库ostream运算符和自动迭代器

时间:2017-03-16 19:41:53

标签: c++ algorithm list stl splice

在我学习c ++ STL库时,我遇到了这段代码:

#include <iostream>
#include <list>

std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list)
{
    for (auto &i : list) {
        ostr << " " << i;
    }
    return ostr;
}

int main ()
{
    std::list<int> list1 = { 1, 2, 3, 4, 5 };
    std::list<int> list2 = { 10, 20, 30, 40, 50 };

    auto it = list1.begin();
    std::advance(it, 2);

    list1.splice(it, list2);

    std::cout << "list1: " << list1 << "\n";
    std::cout << "list2: " << list2 << "\n";

    list2.splice(list2.begin(), list1, it, list1.end());

    std::cout << "list1: " << list1 << "\n";
    std::cout << "list2: " << list2 << "\n";
}

我可以理解基本概念,但我在这段代码中感到困惑:

std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list)
    {
        for (auto &i : list) {
            ostr << " " << i;
        }
        return ostr;
    }
有人可以解雇我,这个ostream&amp;这个汽车&amp; i,意味着什么?通常是这些代码行。

0 个答案:

没有答案