`
cyw
  • 浏览: 33269 次
  • 来自: 广州
社区版块
存档分类
最新评论

C++STL泛型编程(一)—— vector

    博客分类:
  • STL
阅读更多

        一、STL简单介绍

        泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。

        STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。

       泛型的第一个好处是编译时的严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合框架时,你不得不进行类型转换。

       关于泛型的理解可以总结下面的一句话,它是把数据类型作为一种参数传递进来。

 

        二、组件:

        1、容器:顺序容器{vector、list、deque、string等}是一系列元素的有序集合,关联容器{set、multiset、map、multimap}包含查找元素的键值;

        2、迭代器,作用:遍历容器;

        3、算法:1、排序算法;2、不可变序算法;3、变序性算法;4、数值算法。

 

       三、容器:

       2.1 vector容器
 1、创建形式
 (1)不指定容器的元素个数:vector<int > v;
 (2)创建时,制定容器的大小:vector<int> v(10);
 (3)创建一个具有n个元素的向量容器对象,每一个元素具有指定的初始值:vector<int> v(10,0.8);
 (2)尾部元素扩张,调用push_back()方法,尾部添加,并自动分配新的内存空间。
 2、访问方式
 (1)以下标方式访问vector元素,类似于数组的访问
 (2)用迭代器访问
  vector<[数据类型]>::iterator it; //it相当于指针,然后结合循环语句
 (3)元素的插入
  insert()方法可以在vector对象的任意位置 前 插入一个新的元素,同时vector自动扩展一个元素空间,插入位置之后的所有元素依次向后挪动一个位置。配合<对象>.begin(),<对象>.end()方法【begin()返回的是首元素位置的迭代器,end()返回的是最后一个元素的下一个元素位置的迭代器】
  注意:<对象>.insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下标。


#include<vector>
#include<iostream>

using namespace std;

int main(int argc,char* argv)
{
 vector<int> v(3);
 v[0] = 2;
 v[1] = 7;
 v[2] = 9;
 //在最前面插入新元素,元素值为8
 v.insert(v.begin(),8);      //第一参数是迭代器的位置,第二个参数是插入的值
 //在第二个元素前添加新的元素,3
 v.insert(v.begin()+2,3);          //v.begin()+2
 //使用迭代器变量,相当于定义指针
 vector<int>::iterator it;
 for(it = v.begin();it != v.end();it++)
 {
  //输出迭代器上的元素值
  cout << *it << " " ;
 }
 // 换行
 cout << endl ;
 return 0;
}

 (4)元素的删除
 调用erase()方法可以删除vector中迭代器所指的一个元素,或者一段区间中的所有元素。
 clear()方法则是一次性的删除vector中的所有元素。
 
 v.erase(v.begin()+1,v.begin()+5);//头指针到尾指针

 (5)使用reverse反向排序算法,该函数包含于“#include<algorithm>”.

 reverse(v.begin(),v.end());//头指针到尾指针
 
 (6)使用sort()算法对向量元素排序,包含于"#include<algorithm>".
 sort算法要求使用随机访问迭代器的方式进行排序,在默认的情况下,对向量元素进行升序排列。
 
 sort(v.begin(),v.end());//头指针到尾指针,可以进行重写

 (7)向量的大小
 <对象>.size():返回向量的大小,即元素的个数。
 <对象>.empty():返回向量是否为空。0或者1.

分享到:
评论

相关推荐

    STL与泛型编程

    STL(Standard Template Library,标准模板库...总之,STL与泛型编程是C++编程的重要组成部分,掌握了这两者,你将能编写出更加高效、灵活的代码。通过不断实践和学习,你将能够充分利用STL的优势,解决各种复杂问题。

    stl泛型编程--视频教程,讲的比较细

    通过上述内容的学习,我们了解到STL泛型编程为C++开发提供了强大的工具箱。掌握STL不仅可以提高编程效率,还能帮助开发者写出更加优雅、高效的代码。未来随着C++语言的发展,STL还将不断进化和完善,为程序员带来更...

    C++f 泛型编程应用实例

    标准模板库(STL)是C++泛型编程的核心组成部分,它包含了一系列容器(如vector、list、set等)、迭代器、算法和函数对象。STL的使用让开发者能够快速构建高效的数据结构和算法,而无需从头实现。例如,vector是一个...

    C++标准模板库STL和泛型编程简介

    ### C++标准模板库STL和...STL是C++编程中不可或缺的一部分,它不仅提供了丰富的数据结构和算法,还引入了一种全新的编程思维方式——泛型编程。通过对STL的学习和掌握,开发者可以编写出更为高效、易于维护的代码。

    C++和Stl相关 泛型编程

    泛型编程是C++中实现高度抽象和重用的关键概念,它允许编写不依赖于特定数据类型的代码,从而提高了代码的通用性和效率。 STL由四个主要组件构成:容器、迭代器、算法和函数对象。容器是存储元素的类模板,如vector...

    泛型编程与STLL.rar c++经典书籍

    《泛型编程与STL》是一本深入探讨C++编程技术的专业书籍,主要围绕着泛型编程和标准模板库(STL)展开。泛型编程是C++编程中的一种高级技术,它允许开发者编写可重用且类型无关的代码,提高了代码的灵活性和效率。...

    C++ STL 和 泛型编程1

    C++ STL,全称为Standard Template Library,是C++标准库的一部分,它提供了高效且灵活的容器、算法和迭代器等工具,便于实现泛型编程。泛型编程是一种编程范式,允许开发者编写不依赖特定数据类型的代码,从而提高...

    三十分钟掌握STL(泛型编程)

    STL的核心优势在于其高度的通用性和效率,这些特性使得它成为现代C++编程不可或缺的一部分。 #### 数据结构与算法分离 STL的一个显著特点是实现了数据结构和算法的彻底分离。这意味着用户可以自由地选择不同的数据...

    泛型编程与STL.pdf

    根据提供的文件信息,“泛型编程与STL.pdf”这一标题及描述主要聚焦于两个核心概念:泛型编程和标准模板库(Standard Template Library,简称STL)。这些是现代C++编程语言中的重要组成部分,对于软件开发人员来说...

    C++泛型编程和设计模式应用

    《C++泛型编程和设计模式应用》是Addison Wesley出版社推出的一本深入探讨C++编程技术的专业书籍,主要关注两个关键领域:泛型编程和设计模式。这本书旨在帮助开发者提高代码的重用性、灵活性和效率,通过利用C++...

    泛型编程与STL中文版.pdf

    根据提供的信息,“泛型编程与STL中文版.pdf”这一标题和描述中涉及的主要知识点包括泛型编程(Generic Programming)以及标准模板库(Standard Template Library, STL)。由于部分内容并未给出实质性的文本信息,...

    泛型编程与STL.rar

    STL(Standard Template Library,标准模板库)是C++的一个核心部分,它利用了泛型编程的优势,提供了高效且灵活的数据结构(如向量、列表、映射等)以及算法(如排序、查找、迭代等)。这个"泛型编程与STL.rar...

    侯建的泛型编程与STL

    泛型编程是C++语言中一个强大的特性,它允许开发者编写不依赖于特定数据类型的代码,从而实现更高效、更具可复用性的程序设计。在《侯建的泛型编程与STL》这本书中,作者深入浅出地探讨了这个主题,并将其与C++的...

    泛型编程与stl_11066337.rar

    STL(Standard Template Library,标准模板库)是C++中实现泛型编程的一个核心工具集,包含了一系列高效的容器、算法和迭代器,极大地提高了代码的效率和抽象层次。现在,让我们深入探讨这两个关键主题。 **泛型...

    C++ STL教程pdf

    STL的核心概念包括泛型编程、容器、迭代器、算法和函数对象,这些组件共同构成了一个强大的抽象数据结构和算法库。 1. **泛型编程思想**:泛型编程是STL的基础,它允许编写不依赖于具体数据类型的代码。通过模板...

    对C++的特点,类和继承,STL与泛型编程,库的设计等沉思录

    ### C++的特点 C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅...对于想要深入了解这些主题的读者来说,《对C++的特点,类和继承,STL与泛型编程,库的设计等沉思录》无疑是一本非常有价值的参考书籍。

    C++ STL编程轻松入门

    C++ STL,全称为Standard Template Library(标准模板库),是C++编程中极其重要的组成部分,...通过学习,你不仅能提升C++编程的效率,还能理解面向对象和泛型编程的思想,为后续深入研究C++和软件开发打下坚实基础。

    泛型编程源起_实现与意义_下_.pdf

    - **标准模板库(STL)**:C++的标准模板库是一个广泛应用泛型编程的例子,其中包括了许多泛型容器(如vector、list)、泛型算法(如sort、find)等,这些都是基于模板实现的。 - **元编程**:随着泛型编程的发展,...

    C++设计新思维:泛型编程与设计模式之应用

    通过模板(templates),C++可以创建泛型函数和泛型类,如STL(标准模板库)中的容器、算法和迭代器就是泛型编程的典型应用。学习泛型编程能够帮助程序员编写出更加灵活、高效且可维护的代码。 1. 模板基础:了解...

Global site tag (gtag.js) - Google Analytics