一. 命名空间
命名空间的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;
- 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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!