
C++/STL
imxiangzi
这个作者很懒,什么都没留下…
展开
-
C++之容器(关联容器)
关联容器和顺序容器的本质区别:关联容器是通过键存取和读取元素、顺序容器通过元素在容器中的位置顺序存储和访问元素。因此,关联容器不提供front、push_front、pop_front、back、push_back以及pop_back,此外对于关联容器不能通过容器大小来定义,因为这样的话将无法知道键所对应的值什么。两个基本的关联容器类型是map和set。map的元素以键-值对的形式组织:键转载 2015-11-20 00:22:16 · 417 阅读 · 0 评论 -
关于STL中vector容器的一些总结
vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便。vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似1.vector的简单介绍vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便。vector又被称为向量,vector可以形象的描转载 2015-11-18 22:22:52 · 1081 阅读 · 0 评论 -
C++ 容器vector 语法练习
编程不是什么技术活,就是个手工活,常常练习,否则手很生. 前面写个一次,很久不用就忘记了. http://blog.youkuaiyun.com/sergery/article/details/8144354 [cpp] view plaincopy// C++ Prime 习题3.17 P31 // 熟悉下容器操练语法转载 2015-11-17 00:03:40 · 1279 阅读 · 0 评论 -
C++面试题之容器
http://wenku.baidu.com/link?url=s7x-6FA6jgcTX1HeyZg2Be5k6My5q-QtTn2aZemX3k15xuz_ncthSbCBWLjWFpDZV_NDG_vnBQDErtCxv4ZqCuvE51YqvXfbQS3c3CJqtl3转载 2015-11-17 00:02:48 · 1983 阅读 · 0 评论 -
C++容器练习代码【加网友分享】
点击(此处)折叠或打开// STL.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include ctime>#include cstdlib>#include map>#include string>#include iostream> // std::cout#in转载 2015-11-17 00:02:23 · 910 阅读 · 0 评论 -
C++迭代器之'插入迭代器'
插入迭代器(Insert Iterator),又叫插入器(Inserter),是继上次的反向迭代器之后C++中的又一个迭代器适配器。插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。插入迭代器对标准算法库而言尤其重要。算法库对所有在容器上的操作有个承诺:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一承诺,即保持了设转载 2015-11-16 23:57:28 · 866 阅读 · 0 评论 -
C++容器与算法
容器:某一类型数据的集合。C++标准顺序容器包括:vector,list,queue容器初始化 vectorint> t; for (int i = 0; i 50; i ++) { t.push_back(i); } vectorint> c; // 空容器转载 2015-11-16 23:23:31 · 605 阅读 · 0 评论 -
C++之vector和迭代器
vector的简单使用?123456789101112131415161718192021222324252627282930转载 2015-11-16 23:16:58 · 558 阅读 · 0 评论 -
C++顺序容器二
forward_list的特殊操作?1234567891011121314151617181920212223242526272829转载 2015-11-16 23:14:53 · 389 阅读 · 0 评论 -
C++习题与解析-模板
01.分析以下程序的执行结果 #include template T max(T x,T y) { return (x>y?x:y); } void main() { cout } 解: 本题说明函数模板的使用方法。max()函数是一个函数模板,它返回两个参数中的较大者。在调用时自动联编相应的max()转载 2015-11-16 23:32:02 · 5996 阅读 · 0 评论 -
C++顺序容器一
erase:擦掉; 抹去; 擦掉; 清除emplace:放列,安置,安放list.cpp主要关于容器的初始化操作?1234567891011121314151617181920转载 2015-11-16 23:13:57 · 532 阅读 · 0 评论 -
c++顺序容器的学习
1.顺序容器分为3类:vector,list,deque2. 容器内元素的类型约束: 在C++中,大多数的数据类型都可以做为容器的元素,甚至容器。容器的元素类型必须符合两个条件:1.元素类型支持赋值运算,2,元素类型的对象必须可以复制。要注意的是引用类型无法成为容器的元素。(这是因为如果引用类型成为元素后,就会出现引用的引用,或者指针的引用等,C++里面不支持这样的语意)转载 2015-11-18 22:48:34 · 469 阅读 · 0 评论 -
c++中的关联容器
c++中的关联容器主要是map、set,已经multimap、multiset。为了讲map,得先将pair类型:pair就是一个两个类型的组合,比如一个人的学号就可以是pair,其中的int是学号,string是名字。map就是一个容器,里面装的就是若干个pair。每个pair的第一个元素,称为键(注意键的类型必须支持小于(首先讲讲如何给imap添加元素:有两种的方法,使转载 2015-11-20 00:21:21 · 543 阅读 · 0 评论 -
深度解析C++模版
在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时,参数由编译器来替换,这非常像原来的宏方法,却更清晰,更容易使用。模板使类和函数可在编译时定义所需处理和返回的数转载 2015-12-11 14:36:39 · 1122 阅读 · 0 评论 -
模板实例化
一个模板函数,把声明和定义分别放在.h文件和.cpp文件种,如果不调用这个函数的话,编译连接都能通过,但是如果调用这个函数的话,连接就有错误:unresolved external symbol,因为.ccp文件里的模板实现代码没有被编译成二进制代码。C++ Primer 第三版 中文版 10.5 模板编译模式: "C++支持两种模板编译转载 2015-12-11 14:35:14 · 1075 阅读 · 0 评论 -
vector容器(一) - Double_win
一、 Vector简要描述vector是C++标准模版库STL提出的一种顺序存储结构,之所以称之为“容器”,是因为vector是一个模板类,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构。通过设置vector的参数允许我们制定容器汇总的元素的数据类型,可以将许多重复而乏味的工作简化。需要指出的是:1. vector在内存中是顺序存储的,其满足顺序数据结构的特征:转载 2015-11-18 22:24:51 · 727 阅读 · 0 评论 -
vector的resize()和reserve()函数的区别
reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函数之转载 2015-11-18 22:21:42 · 529 阅读 · 0 评论 -
函数模板和类模板的实例化和具体化
一.函数模板1.显示实例化(explicit instantiation)和显示具体化(explicit specialization)的区别:(1) 形式上:显示实例化: template void Swap (int ,int);显示具体化: template (int,int); 或 template从转载 2015-12-11 15:51:36 · 5644 阅读 · 0 评论 -
C++函数模板的具体化和实例化
原文连接:http://hi.baidu.com/sucjhwaxp/blog/item/f0ee4e1145ca83e7c2ce793e.htmlC++函数模板----模板实例化、具体化函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样可以减小代码的书写复杂度,同时也便于修改。mark:使用函数模板并不会减少最终可执行程序的大小,转载 2015-12-11 14:39:42 · 6606 阅读 · 0 评论 -
C++函数模板与类模板实例解析
本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解。具体内容如下:泛型编程(Generic Programming)是一种编程范式,通过将类型参数化来实现在同一份代码上操作多种数据类型,泛型是一般化并可重复使用的意思。泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。模板(template)是泛型编程的基础转载 2015-12-11 14:26:01 · 511 阅读 · 0 评论 -
[C++]类模板在何时实例化?
影响中的一道笔试题,总结了下模板类只声明未定义时,在哪些情况会出现编译错误。1、直接实例化对象(只是声明则不会出错),无论用栈还是new,编译时都会出错。2、函数定义(只是声明则不会编译错误)中参数或返回值引用实例化该模板对象时,非引用和传指针,编译时会出错。总结: 定义中直接使用类模板的实例模板类而非引用,则在编译时就会对其实例化,因为本例中该类模板只有声明没有定义,所以转载 2015-12-11 16:40:03 · 10775 阅读 · 0 评论 -
实例化和具体化详解
在解释具体化和实例化看的有点乱,分解出来备忘在代码中包含函数模板本身并不会生成函数定义,它只是用于生成函数定义的方案编译器使用模板为我写类型生成函数定义时,得到的是模板实例如这个模板templatevoid Swap(T &t1,T &t2){ T _t; _t=t1; t1=t2; t2=_t;}调转载 2015-12-11 15:52:16 · 2665 阅读 · 0 评论 -
C++之string
一些简单的关于string对象的知识,以后还会补充?1234567891011121314151617181920212223242526272转载 2015-11-16 23:12:44 · 497 阅读 · 0 评论 -
c++文件結束符
一直奇怪下面一段程序怎樣才結束,按多少次回車也沒用。#includeint main(){ int amount=0,value; while(std::cin>>value) if(value0) ++amount; std::cout"Amount of all negative values read is"转载 2015-11-16 22:28:53 · 633 阅读 · 0 评论 -
STL迭代器简介
标准模板库(The Standard Template Library, STL)定义了五种迭代器。下面的图表画出了这几种: input output \ / forward | bi转载 2015-11-14 16:21:12 · 416 阅读 · 0 评论 -
C++STL之迭代器
迭代器除了在STL中遍历序列对象外,还有其他更多的迭代器被iterator所定义。iterator头文件定义迭代器的几个模板将数据从源传到目的地。流迭代器(stream iterator)作为指向输入或输出流的指针,它们可以用来在流和任何使用迭代器的源或目的地之间传输数据,如算法。插入迭代器(inserter iterator)可以将数据传输给一个基本的序列容器。Iterator头文件定义了两个流转载 2015-11-14 16:20:02 · 606 阅读 · 0 评论 -
从零开始学C++之STL(一):STL六大组件简介
一、STL简介(一)、泛型程序设计泛型编程(generic programming)将程序写得尽可能通用将算法从数据结构中抽象出来,成为通用的C++的模板为泛型程序设计奠定了关键的基础(二)、什么是STL1、STL(Standard Template Library),即标准模板库,是一个高效的C++程序库。2、包含了诸多转载 2015-11-14 16:16:38 · 7169 阅读 · 0 评论 -
C++标准模板库 迭代器 iterator 详解(二)
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取转载 2015-11-14 16:15:49 · 2157 阅读 · 0 评论 -
C++标准模板库 迭代器 iterator 详解(一)
[cpp] view plaincopyprint?#include #include #include #include #include //copy using namespace std; template class T> inline void print (const T& coll, con转载 2015-11-14 16:15:02 · 3779 阅读 · 0 评论 -
C++迭代器 iterator (二)
erator的概念源自于对遍历一个线性容器工具的抽象,即如何你能访问这个容器的某个元素。对于最简单的数组,当然可以用数组的索引值,因为数组是连续存放在内存中的;但对于链表,就必须用指针。除此之外,还有还有很多种数据结构需要提供一个方便的工具来访问其中的元素,方法有ID,关键字等等。为了统一所有的容器的这种工具的使用,一般提供一整套容器的开发者就会用一种方式来表示各种容器的访问工具。例如C++转载 2015-11-14 16:13:33 · 1183 阅读 · 0 评论 -
C++迭代器 iterator (一)
迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。每种容器类型都定义了自己的迭代器类型,如vector:vector::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector定义的iterator类型。使用迭代器读取vector中的每一个元素: vector ivec(10,1); for(转载 2015-11-14 16:12:26 · 750 阅读 · 0 评论 -
C++迭代器
迭代器简介除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator )。迭代器是一种检查容器内元素并遍历元素的数据类型。标准库为每一种标准容器(包括 vector )定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现代 C转载 2015-11-14 16:03:54 · 571 阅读 · 0 评论 -
C++迭代器的使用方法
STL中迭代器怎么用,如何用迭代器访问容器呢。STL是C++中非常重要的内容,让程序代码更简洁、高效。每种标准容器都定义了相应的迭代器类型。下面说说常用迭代器的使用方法 ^_^工具/原料Visual Studio 2010 ( 或其他 C++ 编译器 )方法/步骤输入迭代转载 2015-11-14 15:58:33 · 2404 阅读 · 0 评论 -
STL容器之vector
Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。缺点就是她的异常处理机制不完善,这点你在接下来的内容将会看见很多。为了可以使用vector,必须在你的头文件转载 2015-11-14 15:48:47 · 822 阅读 · 0 评论 -
C++基本知识(二)——vector与迭代器和数组与指针
C++基础知识(二) ——vector类型与迭代器和数组类型与指针vector类型与数组类型比较vector类型长度是动态的,可以根据需要动态的调用push_back函数添加新的元素,而数组的长度是固定的;数组没有获取数组大小的函数,而vector类型提供size函数能够方便的获取容器的大小;现代C++程序应尽量使用ve转载 2015-11-14 16:23:28 · 3509 阅读 · 0 评论 -
迭代器是什么
在学习c++ STL的时候,整天碰到迭代器,也整天用,但是,到底它是个什么东西,很多人没有一个认识。这里我通过几个小的DEMO,来看看迭代器。首先我实现了一个十分简陋的vector类:[cpp] view plaincopytemplate class T> class vector { private: T* pb转载 2015-11-14 11:06:14 · 468 阅读 · 0 评论 -
C++中const迭代器 和 const_iterator的区别
话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。 const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。[cpp] view plaincopyvectorint> vv(10,9); const vectorint>转载 2015-11-16 22:21:30 · 468 阅读 · 0 评论 -
c++模板类学习--例子编译可能有问题【注】
1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y){ return(x>y)?x:y ; }//函数2.转载 2015-11-16 23:35:59 · 412 阅读 · 0 评论 -
C++模板
模板定义函数模板:template T fun_name(const T&, const T&);类模板:template class class_name { public: T t; void test(const T& t); }模板规则类模板作用域在模板定义的整个过程类模板不能重转载 2015-11-16 23:28:17 · 328 阅读 · 0 评论 -
iterator与const_iterator及const iterator区别
如果你传递过来一个const类型的容器,那么只能用const_iterator来遍历。void Method(const vectorint> vInt){ vectorint>::const_iterator iter;}简单示例 vectorint> ivec; vectorint>::const_iterator citer1 = ivec.转载 2015-11-16 23:22:10 · 354 阅读 · 0 评论