C++笔记之标准库类型

来源:互联网 发布:linux samba怎么安装 编辑:程序博客网 时间:2024/05/17 02:11
  • 命名空间的using的声明
using声明用来指明在程序中用到的命名空间中的名字,C++程序中所用到的名字都必须指明命名空间。

std::cin >> i

::叫做作用域操作符,在以上代码中的含义是右操作数的名字可以在左操作数的作用域中找到。

using关键字使得使用命名空间成员变得更简单。例如:

using std::cin;

using std::string; 

或者:

using namespace std;

在后续代码中就可以直接使用cinstring成员了。

注意:在头文件中,必须总是使用完全限定的标准库名字,因为一旦在头文件中使用using声明,那么在所有包含该头文件的程序中都放置了同一using声明,不论该程序是否需要该声明。头文件中自定义必须要的东西。

  • 标准库string类型

1.string对象的定义和初始化

String s1

默认构造函数,s1为空串

String s2s1);

s2初始化为s1的一个副本

String s1"value");

s1的内容初始化为字串value

String s1n 'c';

s1的内容为cn个副本

注意:标准库string类型和字符串面值不是一回事。标准库string类型是一个对象,而字符串面值是C风格的字符串。

 

2.string对象的操作

s.empty()

检查s是否为空

S.size()

返回s中字符的个数

s[n]

返回sn个位置的字符

S1+s2

链接两个字符串,使之形成一个空串

S1 = s2

s1的内容,替换为s2的内容

V1==v2

判断两个字符串是否相等,返回bool型数据

!= , <, <=, >, >=

字符串比较

 

3.string::size_type类型

按道理来讲s.size()返回的值应该是一个整型值,但事实上是Size_type类型,它是string类型定义的一个配套类型。采用string::size_type的目的是为了使库类型具有机器独立性,因为不同的机器上int型数据能表示的整数范围并不相等(如16位机int类型变量只能表示32767个字符,这对于string对象来说太小了)。

 

4.string对象的赋值和拼接

S1=S2;在赋值时,会先把原S1的内容释放掉,然后再申请足够的空间,将S2的副本存入。

S1=S1+S3;或者 S1+=S3

也可以进行string对象和字符串字面值的链接:

S1=S2+hello+world”;

注意:string对象和字符串字面值混合链接时+号操作符的左右操作数必须至少有一个是string类型。

 

5.string对象中字符的处理

cctype头文件中定义了一系列字符处理的函数

Isalnum

是字母或者数字

Isalpha

是字母

Iscntrl

是控制字符

Isdigit

是数字

Isgraph

不是空格,但可以打印的字符

Islower

是小写字母

Isprint

是打印字符

Ispunct

是标点符号

。。。

 

 

  • 标准库vector类型

1.初始化方法

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

Vector<T>v2(v1);   v2v1的一个副本

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

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

 

2.vector对象的操作

v.empty()

是否为空

v.size()

返回v中元素的个数

v.push_back(t)

v的末端增加一个值为t的元素

v[n]

返回v中位置为n的元素

V1 = v2

v1的元素替换为v2的副本

== , !=, <, <=, >, >=

比较,返回bool值

 

3.vector对象的size

vector类也定义了一个类似string中size_type的值,但是在使用vector中size_type类型的相关操作时,必须指明该类型是在那里定义的。vector类型总是包括vector的元素类型:

Vector<int>::size_type               ///ok

Vector::size_type                        ///未指明类型,error

 

4.vector对象元素的遍历

vector<int> ivec;

for ( vector<int>::size_type ix= 0; ix != ivec.size(); ix++)

{//do sth...

}

  • 迭代器

迭代器是一种检查容器内元素并遍历元素的数据类型。

1.容器的iterator类型

vector<int> ivec;

vector<int>::iterator iter;

iter =  ivec.begin(); //初始后iter所指元素即为ivec[0]

for(; iter != ivec.end(); iter++)

{//遍历

}

注意:C++中循环条件常用!=。

 

2.const_iterator,只读类型,不改变容器中元素的值

for(vector<string>::const_iterator iter = txt.begin(); iter != txt.end();iter++)

{//...

}

 

3.迭代器的算术操作

Iter + n, 结果为该迭代器向后移动n个位置

Iter1 - iter2结果为两个迭代器之间的距离,其类型为vector<T>::difference_type

  •  
    • 标准库bitset类型

这个类型用于处理二进制的有序集。

1.定义和初始化

bitset<n> b;  b为n位,每位都为0

bitset<n> b(u);b是unsigned long型u的一个副本

bitset<n> b(s);用string类字串,初始化b

bitset<n> b(s, pos, n); b是s中位值pos以后n个位的副本

 

2.bitset对象上的操作

b.any();       b中是否存在1的二进制位?

b.none();      b中不存在置为1的二进制位?

b.count();     统计b中为1的二进制位的个数

b.size();      b中二进制位的个数

b[pos];        访问b中pos位置的二进制位

b.test(pos)    b中在位置pos处的二进制位是否为1

原创粉丝点击