`
tailorcai
  • 浏览: 93637 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

使用insert_iterator简化通用容器操作

阅读更多

STL中的不同容器具有不同的插入操作接口,比如

vector,list,queue等使用push_back,pop_front等
map, set等使用insert

如何编写通用的插入操作呢。这里可以使用insert iterator

template<typename OutIt>
void build( OutIt it ) {
  for( int i=0;i<100;i++) {
    *it ++ = i;
  }
}

std::vector<int> vec;
build( std::front_inserter( vec ));
build( std::back_inserter( vec ));

std::set<int> _set;
build( std::inserter( _set, _set.begin()));


也可以直接使用insert_iterator模板类定义更复杂的insert iterator
分享到:
评论

相关推荐

    cffect stl eg(原版)pdf

    - 示例:对于`std::vector`,使用`erase(iterator)`通常比使用`erase(element)`更高效。 **标签:** - erase(iterator)、erase(element)、性能考虑 --- **标题:** 关注分配器的约定和限制 (Item 10) - **核心...

    C++STLQuickReference

    根据给定的文件信息,以下是对C++标准模板库(STL)的快速参考知识点的详细解析,聚焦于容器部分,尤其是对Pair和通用容器的深入探讨。 ### 1. Notations 首先,文档中使用了一些特殊的符号和约定来简化表述: - `...

    Effective_STL

    - **Item 27**:使用`distance`和`advance`将容器的`const_iterator`转换为迭代器。这样可以避免在需要写入操作时使用只读迭代器。 - **Item 28**:了解如何使用反向迭代器的基础迭代器。反向迭代器允许从后往前遍历...

    effective stl stl 技巧

    - 在处理文本输入时,使用`istreambuf_iterator`可以简化代码。 #### 算法 #### 条款30:确保目标区间足够大 - **核心概念**:在使用某些算法时,确保目标区间的容量足够。 - **应用场景**: - 使用复制、移动...

    列表队列应用

    为了简化代码,这里声明使用`std`命名空间中的所有标识符。 3. **模板函数** ```cpp template void printContainer(const char* msg, const T& s){ cout ; copy(s.begin(), s.end(), ostream_iterator(cout,...

    STL.Tutorial.and.Reference.Guide

    - **容器操作**:对于容器的操作进行了详细介绍,包括插入(`insert`)、删除(`erase`)、查找(`find`)等基本操作。 - **迭代器**:迭代器是访问容器元素的主要方式之一。书中提到了如何使用迭代器遍历容器,并且介绍了...

    C++中stl总结

    - STL还提供了一系列通用的算法,如排序、搜索、变换等,这些算法可以作用于各种容器。 - 常见的算法有`sort()`, `search()`, `reverse()`等。 4. **适配器(Adapter)** - 适配器是对容器和算法功能的扩展和变形...

    算法周报.pdf

    - **示例**:使用`&lt;vector&gt;`头文件可以创建和操作`vector`容器。 ### 知识点三:Vector 容器详解 - **定义**:`vector`容器是一种动态数组,支持元素的高效插入和删除。与C语言的传统数组相比,`vector`能够自动...

    STL基础详解

    迭代器是一种通用的指针,可以用来遍历容器中的元素。STL定义了五种不同类型的迭代器: - **Input Iterator**:输入迭代器,只读且只能向前移动。 - **Output Iterator**:输出迭代器,只能写入且只能向前移动。 - ...

    C++ stl 详细讲解-C++ stl 详细讲解

    - **特点**:STL是跨平台的,可以在不同的操作系统和编译器上使用,并且保持一致的行为。 **1.2 为何要学习STL** - **标准化**:作为C++ ANSI/ISO标准的一部分,STL确保了无论在哪种编译器或操作系统上都能得到...

    STL和运算符重载入门PPT

    - **迭代器(Iterator)**:提供了一种方法来访问容器中的元素,而无需暴露容器的底层实现细节。 - **算法(Algorithm)**:一组处理容器内数据的通用函数,例如`sort`、`search`等。 - **函数对象(Function Object)**:...

    C++ STL使用入门

    8. **算法**:STL还包括一系列通用的算法,如`sort()`, `find()`, `copy()`等,可以直接作用于容器,简化了代码编写。 总的来说,C++ STL提供了一种高效、灵活的方式来组织和操作数据。虽然入门可能有一定难度,但...

    STL部分总结

    算法部分主要包括了一系列通用的操作,如排序、搜索、拷贝等。这些操作通常被定义为模板函数,可以应用于不同的数据类型。 ##### 示例代码分析: ```cpp struct student { char name[25]; int Math; int ...

    vector的概要介绍与分析

    - **意义**: 这些丰富的操作不仅简化了编程工作,还提升了代码的可读性和可维护性。 #### 三、Vector的实际应用 `vector`在多种应用场景中都展现出了其独特的优势,包括但不限于以下几个方面: **1. 图像处理** ...

    通用地图搜索范例的一线解决方案

    然而,这种模式可以通过一个简单的操作进一步简化:`std::map::emplace`或`std::map::emplace_hint`。 `std::map::emplace`允许我们在一次操作中直接构造并插入键值对,如果键不存在的话。这个函数会尝试构造键值对...

Global site tag (gtag.js) - Google Analytics