美文网首页
C++ STL back_inserter 函数说明

C++ STL back_inserter 函数说明

作者: book_02 | 来源:发表于2019-09-26 07:42 被阅读0次

说明

back_inserter用于在末尾插入元素。
实现方法是构造一个迭代器,这个迭代器可以在容器末尾添加元素。
这个迭代器是以安插(insert)方式而非覆写(overwrite)方式运作的。

可以使用back_inserter的容器是有push_back成员函数的容器,比如vector, deque and list

函数签名:

template <class Container>
  back_insert_iterator<Container> back_inserter (Container& x);

头文件

#include <iterator>

例子:在末尾添加一个元素

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>


int main()
{
    std::vector<int> v1{ 1, 2, 3, 4, 5, 6 };

    *(std::back_inserter(v1)) = 10;

    std::cout << "v1:   ";
    for (int i : v1) {
        std::cout << i << "\t";
    }
    std::cout << std::endl;

    return 0;
}

结果:

v1:   1    2       3       4       5       6       10

例子:拷贝v2到v1的末尾


#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
    std::vector<int> v1{ 1, 2, 3, 4, 5, 6};
    std::vector<int> v2{ 10, 20, 30, 40, 50, 60};

    std::copy(v2.begin(), v2.end(), std::back_inserter(v1));

    std::cout << "v1:   ";
    for (int i : v1) {
        std::cout << i << "\t";
    }
    std::cout << std::endl;

    return 0;
}

结果:

v1:   1 2       3       4       5       6       10      20      30      40      50      60

end()的不同

首先end()返回的迭代器是不支持解引用的,要想修改最后一个元素使用v.end()-1,强行对end()解引用会报异常。

然后*(v.end()-1) = 10;是修改最后一个元素内容,而*(std::back_inserter(v2)) = 10;是在末尾新增一个元素。

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
    std::vector<int> v1{ 1, 2, 3, 4, 5, 6};
    std::vector<int> v2{ 1, 2, 3, 4, 5, 6 };

    *(v1.end()-1) = 10;
    *(std::back_inserter(v2)) = 10;

    std::cout << "v1: ";
    for (int i : v1) {
        std::cout << i << "\t";
    }
    std::cout << std::endl << std::endl;

    std::cout << "v2: ";
    for (int i : v2) {
        std::cout << i << "\t";
    }
    std::cout << std::endl << std::endl;

    system("pause");
    return 0;
}

结果:

v1: 1   2       3       4       5       10

v2: 1   2       3       4       5       6       10

参考

http://www.cplusplus.com/reference/iterator/back_inserter/

相关文章

  • C++ STL back_inserter 函数说明

    说明 back_inserter用于在末尾插入元素。实现方法是构造一个迭代器,这个迭代器可以在容器末尾添加元素。这...

  • C++ STL transform 函数说明

    说明 简而言之,transform是用来做转换的。转换有两种:一元转换和二元转换。 一元转换是对容器给定范围内的每...

  • C++ STL iota 函数说明

    说明 iota用一个从value递增的数列给[first, last)的容器赋值等效于 C++11 才引入,之前版...

  • C++库

    标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集...

  • GeekBand C++ STL与泛型编程 第一周学习笔记

    STL概述 C++标准库包含STL和一些其他内容 STL有六大组件: 容器,分配器,算法,迭代器,适配器,仿函数 ...

  • [资源]C++ 程序员必收藏

    C++ 资源大全中文版 标准库 C++标准库,包括了STL容器,算法和函数等。 C++ Standard Libr...

  • 读书笔记17.06.03

    C++ STL:Listlist是C++标准模版库(STL,Standard Template Library)中...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • C++后端开发的踩坑整理

    C++开发的一些经验和踩坑整理 STL相关的坑 1. std::sort()函数要求严格弱序 STL文档中要求so...

  • C++ STL equal_range 函数说明

    说明 equal_range 返回范围[first,last)内等于指定值val的子范围的迭代器。 注意的是使用这...

网友评论

      本文标题:C++ STL back_inserter 函数说明

      本文链接:https://www.haomeiwen.com/subject/xhfmuctx.html