C++ stack,queue,vector 中 易混淆的常用方法 浅析

C++ 中stack,queue,vector是常见的数据结构,它们分别封装在<stack>,<queue>,<vector>头文件中。

stack,queue,vector的定义如下:

stack<class T> s;

queue<class T> q;

vector<class T> v;

  • stack常用方法:

    • push()的向容器顶部里插入元素;
    • pop()是删除容器顶部的元素;
    • top()返回容器顶部的元素;
    • size()返回容器的元素个数;
    • empty()是检查是否为空的方法。

【注】

    • end和begin方法不是stack中的方法;
    • 直接用size方法即可得到数据的大小。
  • queue常见方法:

    • back()返回队列最后一个元素引用;
    • empty()是检查是否为空的方法;
    • front()获得队列最前面一个元素引用;
    • push()在队列尾添加一个数据;
    • pop()删除队列头的一个数据;
    • size()队列中元素个数。

【注】

    • push_back和push_front在VC6.0之中是编译不通过的;
    • 直接用size方法即可得到数据的大小;
    • end和begin同样在VC6.0中编译不能通过。
  • vector的方法
1.vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的;vector的构造函数:

vector<string> v1; // 创建空容器,其对象类型为string类;

vector<string> v2(10); // 创建有10个具有初始值(即空串)的string类对象的容器;

vector<string> v3(5, "hello"); // 创建有5个值为“hello”的string类对象的容器;

vector<string> v4(v3.begin(), v3.end()); // v4是与v3相同的容器(完全复制)。

2.void push_back(x); // 向容器末尾添加一个元素 ;

3.void pop_back(); // 弹出容器中最后一个元素(容器必须非空);

4.vector<int>::iterator iter=v.begin();//初始化迭代器,让他指向 v 的开始;

5.iterator erase(iterator it); // 删除指定元素,并返回删除元素后一个元素的位置(如果无元素,返回end());

6.void erase(iterator first, iterator last); // 注意:删除元素后,删除点之后的元素对应的迭代器不再有效;

7.void clear(); // 清空容器,相当于调用erase( begin(),end());

8.void reserve(size_type n); // 确保capacity() >= n。

【注】

iterator erase(iterator it); 方法的返回值是 it 的下一个元素的地址,一般将改地址在此付给it变量;

bengin和end方法是vector方法,不得与stack和queue混淆;

添加删除元素的方式是push_back和pop_back,不得与stack和queue混淆;

iterator是vector的成员变量不得与stack和queue混淆。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-24 06:15:09

C++ stack,queue,vector 中 易混淆的常用方法 浅析的相关文章

【转】Java多线程编程中易混淆的3个关键字( volatile、ThreadLocal、synchronized)总结

概述 最近在看<ThinKing In Java>,看到多线程章节时觉得有一些概念比较容易混淆有必要总结一下,虽然都不是新的东西,不过还是蛮重要,很基本的,在开发或阅读源码中经常会遇到,在这里就简单的做个总结. 1.volatile volatile主要是用来在多线程中同步变量. 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况.而当一个变量被volatil

关于网络学习中易混淆知识点的辨析

OSI参考模型的层次划分与TCP/IP的五层结构 OSI参考模型分为:物理层.数据链路层,网络层,传输层,会话层,表示层,应用层. 物理层涉及到在信道上传输的原始比特流. 数据链路层的主要任务是加强物理层传输原始比特流的功能,使之对应的网络层显现为一条无错线路.发送包把输入数据封装在数据帧,按顺序传送出去并处理接受方回送的确认帧. 网络层关系到子网的运行控制,其中一个关键问题是确认从源端到目的端如何选择路由. 传输层的基本功能是从会话层接受数据而且把其分成较小的单元传递给网络层. 会话层允许不同

C#中易混淆的知识点(一)

一.== 与Equals()的区别: 1.实例: 代码: static void Main(string[] args) { object m1 =1 ; object m2 = 1; Console.WriteLine(m1==m2); Console.WriteLine(m1.Equals(m2)); Console.Read();} 代码运行结果显示: 问题:同样是Object对象的比较,为何用"=="比较是false,而用"Equals()"比较是false

SQL Server中易混淆的数据类型

1)char.varchar.text和nchar.nvarchar.ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据.所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度:而变长字符数据则不会以空格填充.text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符. 后面三种数据类型和前面的相比,从名称上看只是多了

【Android应用开发技术:用户界面】界面设计中易混淆的概念汇总

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells Github:https://github.com/AllenWells [Android应用开发技术:用户界面]章节列表 一 px.dp.sp px:即像素,每个px对应屏幕上的一个点. dp:即设备独立像素,一种基于屏幕密度的抽象单位,在每英寸160点的显示器上:1 dp = 1 px. sp:即比例像素,主要用来处理字体大小,可以根据用户字体

drools规则引擎中易混淆语法分析_循环触发导致死循环分析

整理了下最近在项目中使用drools出现的问题,幸好都在开发与测试阶段解决了,未波及到prod. 首先看这样两条规则 /** * 规则1_set默认利率 */ rule "rate_default" no-loop true when $request:AmountRateRequest(calculateEnum == CalculateEnum.INTEREST || calculateEnum == CalculateEnum.AMOUNT_INTEREST) $response

Scala中的集合:Iterator、BitSet、Set、Map、Stack、Vector、List、Array

 5.   util包 5.1.     架构 http://www.scala-lang.org/docu/files/collections-api/collections.html The following figure shows all collections in package scala.collection. These are all high-level abstract classes or traits, which generally have mutable

STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map

STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map   list vector deque stack queue priority_queue set [unordered_set] map [unordered_map] multimap [unordered_multimap]     contiguous storage double-ended queue LIFO FIFO 1st is greatest  

微软BI 之SSIS 系列 - 对于平面文件中 NULL 值处理过程中容易极易混淆的几个细节

最近有人问我 OLE DB Destination 中的 Keep Nulls 如何控制 NULL 值的显示,为什么选中了 Keep Nulls 但是数据库中没有 NULL 值? 为什么在 Flat File Source 中勾选上了 Retain null values from the source as null values in the data flow 但是为什么目标表上显示的是一个当前日期,而不是 NULL 值等等,单开此文来解释这些非常容易混淆的概念. 在比较纯粹的 ETL 项