命名空间的using声明、string类型和vector类型

  • C++的两种最重要的标准库类型string和vector
  • 类型具有更高级性质,尚未直接实现到计算机硬件中
  • 访问库中名字的简单方法:using声明
  • std::cin就是要使用命名空间中的名字cin, using声明就无须专门前缀
  • using std::cin; using std::cout; using std::endl;
  • 头文件不应包含using声明,因其会拷贝到所有应用其的文件中,可能产生名字冲突

标准库类型string

#include<string>
using std::string;

string s1("value");
string s2 = "value";
string s(n, c) //ccccccccc;
//string 对象操作
os<<s; //将s写到输出流os中,返回os
is>>s;//从is中读取字符串赋给s, 字符串以空白分隔,返回is
getline(is, s);//从is中读取一行赋给s, 字符串以空白分隔,返回is
s.empty();
s.size():
s[n];
s1+s2;//加法运算符至少有一个是string对象,字面值不是string对象
s1=s2;
//== != < <= > >=
cin>>s1>>s2;//空格分隔
cout<<s1<<s2;
string line;
while(getline(cin, line))//读换行符,不存换行符
	if (!line.empty())
	cout<<line<<endl; //手动加换行符
  • 处理string对象中的字符
  • 在cctype头文件中定义了一组标准库函数
    C++兼容了C语言的标准库,name.h–>cname。注意在名为cname的头文件中定义的名字属于命名空间std,而定义在.h中的则不然。
    使用cname,标准库中的名字就总能在命名空间std中找到了。
//for(auto c : str)
string s = "Hello World!!!"
decltype(s.size()) punc_cnt = 0;//size_type类型 string::size_type n;
for (auto c : s)
	if (ispunct(c))
		++punct_cnt;
for (auto &c : s)
	c = toupper(c);//改变了s
//for使用下标迭代
for(decltype(s.size()) index = 0;
	index != s.size() && !isspace(s[index]); ++index)
		s[index] = toupper(s[index]);
isalnum(c);//字母或数字
isalpha(c);
iscntrl(c);//控制字符
isdigit(c);
isxdigit(c);//十六进制数字
isgraph(c);//c不是空格但可打印
isprint(c);//c是可打印字符:空格或者具有可视形式
isspace(c);
ispunct(c);//标点符号
islower(c);
isupper(c);
tolower(c);
toupper(c);

标准库类型vector

类模板class template
可以将模板看作为编译器生成类或函数编写的一份说明
编译器根据模板创建类或函数的过程称为实例化
大多数(非引用)内置类型和类类型都可以构成vector对象
#include<vector>
using std::vector;

vector<T> v1;//执行默认初始化
vector<T> v2(v1);
vector<T> v2 = v1;
vector<T> v3(n,val);
vector<T> v4(n);
vector<T> v5{a,b,c};
vector<T> v5 = {a,b,c};
//向vector中添加元素
string word;
vector<string> text;
while( cin >> word ){
	text.push_back(word);}
v.isempty();
v.size();
v.push_back(t);
v[n];
v1 = v2;
//== != < <= > >=

迭代器iterator

标准库容器可以使用迭代器,string对象也支持迭代器
vector和string支持下标运算符,其他容器不一定
.begin()
.end()//尾后迭代器,如果为空,end和begin相同

标准容器迭代器的运算符
*iter返回迭代器iter所指元素的引用
iter->mem (*iter).mem解引用并获取mem成员
++iter
–iter
!= ==
  • vector string迭代器支持的运算
    iter+n
    iter - n
    iter1-iter2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值