C++ push方法与push_back方法
【转载他人的文章,下午在搞c++,谢谢共享】
【摘要】
push与push_back是STL中常见的方法,都是向数据结构中添加元素。初识STL,对于添加元素的方法以产生混淆,这里暂对两种方法作出比较分析。此外,本文还将简述push对应的stack与queue系列,常见方法的介绍,以及与push_back相对应的vector系列常见方法介绍。详见下文。
list 也是使用 push_back .
【正文】
- push_back 方法介绍
vector::void push_back (const value_type& val);
vector::void push_back (value_type&& val);
该函数将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素,新的元素的值是val的拷贝(或者是移动拷贝)
- vector 常见方法介绍
(1)vector< 类型 > 标识符 ;
(2)vector< 类型 > 标识符(最大容量) ;
(3)vector< 类型 > 标识符(最大容量,初始所有值);
(4) int i[4] = {12,3,4,5};
vector< 类型 > vi(i , i+2); //得到i索引值为3以后的值 ;
(5)vector< vector<int> > //vi 定义2维的容器;记得一定要有空格,不然可能会报错
vector< int > line // 在使用的时候一定要首先将vi个行进行初始化;
for(int i = 0 ; i < 10 ; i ++){
vector.push_back(line);
}
vector 定义二维数组,长度可以不预先确定。
(6)C++ vector排序
vector< int > vi ;vi.push_back(1);
vi.push_back(3);
vi.push_back(0);
sort(vi.begin() , vi.end()); /// /从小到大
reverse(vi.begin(),vi.end()); /// 从大到小
(7)顺序访问
vector < int > vi ;for( int i = 0 ; i < 10 ; i ++)
{
vi.push_back(i);
}for(int i = 0 ; i < 10 ; i ++) /// 第一种调用方法
{
cout <<vi[i] <<" " ;
}for(vector<int>::iterator it = vi.begin() ;it !=vi.end() ; it++) ///第二种调用方法
{
cout << *it << " " ;
}
(8)查找
vector < int > vi ;
for( int i = 0 ; i < 10 ; i ++)
{
vector.push_back(i);
}
vector < int >::interator it = find(vi.begin() , vi.end(),3) ;
cout << *it << endl ; ///返回容器内找到值的位置。
(9)使用数组对C++ vector进行初始化
int i[10] ={1,2,3,4,5,6,7,78,8} ;
///第一种
vector<int> vi(i+1,i+3); ///从第2个元素到第3个元素
for(vector <int>::interator it = vi.begin() ; it != vi.end() ; it++)
{
cout << *it <<" " ;
}
(10) 结构体的 vector
struct temp
{
public :string str ;
public :
int id ;
}tmp;
int main()
{
vector <temp> t ;temp w1 ;
w1.str = "Hello world" ;
w1.id = 1 ;
t.push_back(t1);
cout << w1.str << "," <<w1.id <<endl ;
return 0 ;
}
- push 函数介绍
stack::push();//在栈顶增加元素
queue::push();//将x 接到队列的末端。
- stack与queue常见方法介绍
1、stack
stack 模板类的定义在<stack>头文件中。
stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。
定义stack 对象的示例代码如下:
stack<int> s1;
stack<string> s2;
stack 的基本操作有:
入栈,如例:s.push();在栈顶增加元素
出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,如例:s.top()
判断栈空,如例:s.empty(),当栈空时,返回true。
访问栈中的元素个数,如例:s.size()。
2、queue
queue 模板类的定义在<queue>头文件中。
与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。
定义queue 对象的示例代码如下:
queue<int> q1;
queue<double> q2;
queue 的基本操作有:
入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()
C++ push方法与push_back方法的更多相关文章
- JavaScript Number 对象 Javascript Array对象 Location 对象方法 String对象方法
JavaScript Number 对象 Number 对象属性 属性 描述 constructor 返回对创建此对象的 Number 函数的引用. MAX_VALUE 可表示的最大的数. MIN_V ...
- JavaScript引用类型之Array数组的栈方法与队列方法
一.栈方法 ECMAScript数组也提供了一种让数组的行为类似与其他数据结构的方法.具体的来说,数组可以变现的向栈一样,栈就是一种可以限制插入和删除向的数据结构.栈是一种LIFO(Last In F ...
- 【JavaScript】数组方法之基础方法
数组方法之基础方法 Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元素的数目. prototype 使您有能力向对象添加属 ...
- generate_fixed_frame()方法生成Java方法栈帧
在从generate_normal_entry()函数调用generate_fixed_frame()函数时的栈与寄存器的状态如下: 栈的状态如下图所示. 各个寄存器的状态如下所示. rax: ret ...
- 第47篇-解释执行的Java方法调用native方法小实例
举个小实例,如下: public class TestJNI { static { // 程序在加载时,自动加载libdiaoyong.so库 System.loadLibrary("dia ...
- C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法
在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异.比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口 ...
- js 继承 对象方法与原型方法
js函数式编程确实比很多强语言使用灵活得多,今天抽了点时间玩下类与对象方法调用优先级别,顺便回顾下继承 暂时把原型引用写成继承 先看看简单的两个继承 var Parent = function(){} ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- .NET基础架构方法—DataTableToExcel通用方法
p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToExcel通用方法(NPOI) 今天封装DataTaleTo ...
随机推荐
- 纯CSS的三角符号
项目中经常用到三角形,现在给大家讲下用纯CSS写的下三角实心图形 .triangle{ border-width: 5px 4px 0 4px; border-color: #454A7B trans ...
- java常用API之字符串缓冲区
StringBuffer类: StringBuffer是个字符串的缓冲区,是可变的字符串数组,即就是它是一个容器,容器中可以装很多字符串.并且能够对其中的字符串进行各种操作 StringBuffer的 ...
- 面向对象三大特性——封装(含property)
一.封装概念 封装是面向对象的特征之一,是对象和类概念的主要特性. 封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 二.隐藏属性 在p ...
- vue——计算属性和侦听器
一.计算属性(data中的相关数据) 侦听多个属性时——计算属性 comuted. 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: & ...
- Celery-------周期任务
在项目目录例子的基础上进行修改一下celery文件 from celery import Celery from celery.schedules import crontab celery_task ...
- angular2-模块
Angular模块 (NgModule) Angular 模块是带有 @NgModule 装饰器函数的类. @NgModule接收一个元数据对象,该对象告诉 Angular 如何编译和运行模块代码. ...
- iDempiere 开发指南 Process(iDem后台进程)及插件的开发及部署
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...
- myeclipse 2014 闪退问题解决
1.删掉Workspace下面的 \.metadata\.plugins\org.eclipse.core.resources一整个文件夹 2.删掉Workspace 下面的 \.metadata\ ...
- 【起航计划ObjC 003】印第安老斑鸠ObjC的幻想 ---- ObjC经典问题
1.Objective-C的类可以多重继承么?可以采用多个协议么? 答:不可以多重继承,可以采用多个协议. 2.#import和#include的区别是什么?#import<> 跟 #im ...
- C#使用Process类杀死进程,执行命令等
c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using Sys ...