C++Prime4 之标准库类型

一. 命名空间

命名空间的using声明,可以在需要加前缀namespace::的情况下,访问命名空间中的名字。

常用的using namespace std; C++中引入命名空间,主要是为了防止名字冲突,方便管理。

二. 标准库string类型

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

(1)判断字符串空 s.empty();

(2)返回字符个数s.size(),类型是size_type是一个unsigned类型,不要把size返回值赋值给一个int

(3)支持+重载,但是注意第一个必须是string对象,而不能是字符串常量。

(4)字符常用函数,在cctype头文件中定义,比如isalpha(),isdigit(),tolower(),toupper(),isprint()等等

(5)支持下标操作访问

#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin>>s;  //读取并忽略开头所有空白字符,读取到空白字符停止
cout<<s<<endl;
for(string::size_type index = 0; index != s.size(); ++index)
if(isalpha(s[index]))
  cout<<s[index];
return 0;

}

2.getline读取整行文本

string line;
while(getline(cin,line))// 直到文本末尾
    cout<<line<<endl;

在读取整行,还可以gets(char *s)函数;

3.string类赋值,实现会遇到效率上问题,如string st1,str2=”hello world ”; str1 = str2; 赋值必须要先把str1的内存释放掉,然后申请str1足够的内存放置str2的副本。

4.C++和C头文件一点规则,C标准库文件命名形式是name.h ,而C++版本则命名为cname,少了后缀.h,而在前面加c,表示这个头文件来自C标准库。

三.标准库vector类型

需包含头文件#include

1.vector容器,一个容器中的所有对象都必须是同一种类型,对象动态增长。

2.常用操作 v.empty(); v.size(); v.push_back(); 同样支持下标访问操作;

for(vector<int> ::size_type ix =0; ix != ivec.size(); i++x) //在循环中计算好处,是当有增加元素时候,也能正常
    ivec[ix] = 0;
四.迭代器介绍
包含头文件#include<iterator>
1.如vector<int>::iterator iter = ivec.begin();
ivec.end()指向末端元素的下一个,表明指向了一个不存在的元素,因此不能对end()解引用。迭代器解引用,*iter =0 和iter[0]一样;下面用迭代器来编写循环
for(vector<int>:: iterator iter = ivec.begin() ;iter !=ivec.end(); ++iter)
    *iter = 0;
  1. const_iterator的类型,该类型只能用于读取容器内容,但不能修改值。

3.区别const_iterator 和const iterator,后者指向const的迭代器,必须初始化就赋值,一旦初始化,就不能改变迭代器值,因此这类迭代器几乎是没什么用处的。

4.迭代器也可以计算操作,移位等等

五.标准库bitset类型

主要用于处理二进制位的。可以用下标访问

1.初始化:

bitset<n> b; //b有n位,每位都是0  

string s("1100");

 bitset<n> b(s) //用string对象初始化

bitset<32>bitvec32(oxffff);

cout<<"bitvec32: "<<bitvec32<<endl;

2.常用操作

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

b.none();//b中不存在置1的

b.count();//b中是置1的二进制个数

b.size();

b[pos];

b.set();

b.set(pos);

b.reset();

b.flip();

b.flip(pos);等等
原文链接: https://www.cnblogs.com/cheng07045406/archive/2013/06/15/3138039.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/92220

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午1:34
下一篇 2023年2月10日 上午1:34

相关推荐