显示下一条  |  关闭

雨下

心中有剑,天下无敌

 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 

安徽省 宿州市 天蝎座

 发消息  写留言

 
外向的我,希望大家可以指引我,让我思想成熟,成为一个成熟的人
 
近期心愿完成一个小项目,类似qq的软件,希望深入了解操作系统。
交友目的结交朋友
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

日历

 
 
模块内容加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 

C++之迭代器

2010-8-7 22:53:17 阅读323 评论1 72010/08 Aug7

除了使用下标来访问vector对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator)。迭代器是一种检查容器内元素并遍历元素的数据类型。标准库为每一种标准容器定义了一种迭代器类型。迭代器类型提高了比下标操作更通用化的方法。

1、容器的iterator类型

每种容器都定义了自己的迭代器类型,如:vector

vector<int>::iterator iter;

这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型。每个标准库容器类型都定义了一个名为iterator的成员,这里iterator与迭代器实际类型的含义相同。

2、begin和end操作

每种容器都定义了一对名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的迭代器指向第一个元素:

vector<int>::iterator iter = ivec.begin();

上述语句把iter初始化为由名为 begin的vector操作返回的值,假设vector不为空,初始化后,iter即指向该元素为ivec[0]。

end操作返回的迭代器指向vetor的“末端元素的下一个”,通常称为“超出末端迭代器”,表明它指向一个不存在的元素。如果vector为空,begin的迭代器与end返回的迭代器相同。

3、vector迭代器的自增和解引用运算

作者  | 2010-8-7 22:53:17 | 阅读(323) |评论(1) | 阅读全文>>

C++之标准库vector类型

2010-8-7 11:23:58 阅读151 评论0 72010/08 Aug7

vector是同一种类型对象的对象的集合,每个对象有一个对应的整数索引值。常把vector称为容器,是因为它可以包含其它对象。一个容器中的所有对象必须是同一种类型的

1、vector对象的定义与初始化

vector<T> v1;vector保存类型为T的对象。默认构造函数v1为空。

vector<T> v2(v1);v2是v1的一个副本。

vector<T> v3(n, i);v3包含n个值为i的元素。

vector<T> v4(n);v4含有值初始化的元素的n个副本

可以用元素个数和元素值对vector对象进行初始化,构造函数用元素个数来决定vector对象保存的个数,元素值指定每个元素的初始值:

vector<int> ivec1(10, -1);//10elements, each initialized to -1

vector<string> svec(10,"hi!"); //10strings, each initialized to "hi!"

关键概念:vector对象动态增长

vector对象(以及其他标准库容器对象)的重要属性就在于可以运行时高效的添加元素。因为vector增长效率高,在元素已知的情况下,最好是动态地添加元素。

2、vector对象的操作

vector标准库提供了许多类似于string对象的操作,如下例出了几种常用的:

作者  | 2010-8-7 11:23:58 | 阅读(151) |评论(0) | 阅读全文>>

c++之string类型

2010-8-6 23:00:11 阅读116 评论0 62010/08 Aug6

1、string是标准库的类型,支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提高各种有用的操作。

string对象支持几个构造函数,以下是几种初始化string对象的方式:

string s1;默认构造函数,s1为空串

string s2(s1);将s2初始化为s1的副本

string s3("value")将s3初始化为一个字符串副本

strring s4(n, 'c');将s4初始化为字符'c'的n个副本

2、string对象的读与写

string类型的输入要注意:读取并忽略开头所有的空白字符(如空格、换行符、制表符)

读取字符直至再次遇到空白字符,读取终止

可用getline读取整行文本,getline有二个参数:一个输入流对象,一个string对象。getline函数从输入流的下一行读取,并保存读取内容到string中,但不包括换行符。与输入操作不一样的是,getline函数并不忽略开头的换行符。

3、string对象的操作

s.empty()如果s为空,则返回true,否则返回false

s.size()返回s中字符的个数

s[n]返回s中位置为n的字符,位置从0开始计数

s1 + s2 把s1和s2连接成一个字符串,返回新生产的字符串

s1 = s2 把s1的内容替换为s2的副本

v1 == v2 比较v1与v2的内容,相等则返回true,不同则返回false

作者  | 2010-8-6 23:00:11 | 阅读(116) |评论(0) | 阅读全文>>

c++之初始化与const限定

2010-8-5 18:42:09 阅读262 评论0 52010/08 Aug5

1、初始化:定义时指定了初始值的对象被称为是已初始化。C++支持二种初始化变量的形式:复制初始化和直接复制初始化。复制初始化用“=”,直接初始化把初始化值挡在括号中,例如下:

int ival = 1024;//copy-initialization

int ival(1024);//direct-initalization

这二种情形中都可以初始化为1024。

2、使用多个初始化式

每个类都可能会定义一个或几个特殊的成员函数来告诉我们如何初始化类类型的变量。定义如何进行初始化的成员函数称为构造函数,和其他函数一样,构造函数能接受多个参数。一个类可以定义几个构造函数,每个构造函数必须接受不同数目或者不同类型的参数。

通过一个计数器和一个字符初始化string对象。这样创建的对象包含重复多次指定字符,重复次数由指定:

string all_nines(10, '9');//all_nines = '9999999999'

这个例子中,初始化all_nines的唯一方法是直接初始化。有多个初始化式不能使用复制初始化。

3、初始化多个变量

当一个定义中定义了二个以上变量时,每个变量都可能有自己的初始化式。对象的名字立即变成可见,所以可以用同一个定义中前面已定义变量的值初始化后面的变量。已初始化变量和未初始化变量可以在同一个中定义。二种形式的初始化文法可以相互混合:

#include <string>

double salary = 9999.99,

作者  | 2010-8-5 18:42:09 | 阅读(262) |评论(0) | 阅读全文>>

字符到图形

2010-6-2 19:42:24 阅读167 评论0 22010/06 June2

我们写的大多数程序基于win32API的程序我们看到都是字符界面的,windows之所以被人们接受是它的图形化,现在计算机图形学已经是计算机的分支学科了,图形更容易被接受和更人性化的交流

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

这个就是图形程序的额入口点函数,此函数和C下的mian()函数差不多,参数的含义大家MSDN

第一个图形程序:

代码如下:

windows的函数调用在此例子中条用了18个API函数:

LoadIcon 加载图标供程序使用

LoadCursor 加载鼠标指针供指针使用

GetStockObject 获取一个图形对象,在这个例子中,获取绘制窗口背景的刷子

RegisterClass 为程序注册窗口类

MessageBox 显示消息框

CreateWindow 根据窗口类创建一个窗口

ShowWidnow 在屏幕上显示一个窗口

UpdateWindow 指示窗口刷新自身

GetMessage 从消息队列中获取信息

TranslateMessage 转换某些键盘信息

DispatchMessage 将消息发送给窗口过程

BeginPaint 开始窗口绘制

GetClientRect 获取窗口客户的尺寸

作者  | 2010-6-2 19:42:24 | 阅读(167) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注