c++提供了一个内容丰富的抽象数据类型标准库 迭代器
string vector bitset抽象的高级数据结构
string类型支持长度可变的字符串 vector可用于保存一组指定类型的对象
string类型常用的构造函数,当没有指定对象初始化时,系统将使用默认的构造函数
string s1;默认构造函数
string s2(s1); //将s2初始化为s1的副本
string s2("adsfasdfasfas");//初始化为一个字符串的副本
string s4(n,'c')//初始化为字符'c'的n个副本
可以用标准输入输出来读写字符串
接受带空格的字符串
getline(cin,s1);
//cin.getline(s1);,//没成功不知道啥问题
getline函数返回时丢弃换行符,换行符丢弃,将不会储存在string中
string 字符串的下标应该为一个sizetype型 在string中string::size_type(类型为 unsigned类型)
// string s("a111");
for(int i=0;i<s.size();++i)
cout<<s[i];
没问题
vector 同种类型的对象的集合
vector 是一个模版类
几种vector初始化
vector<T> v1;
vector<T> v2(v1);
vector<T> V3(n,i);
vector<T> v4(n);
vector对象(以及其他标准容器对象)的重要属性就在于可以在运行是高效地添加元素,因为vector增长的效率搞,在元素值已知的情况下,最好动态添加元素
vector与string类型使用size_type
vector<int>::size_type 必须指明类型
#include <vector>
#include <iostream>
push_back//方法向vector加入数据
string out;
vector<string> v;
while(cin>>out){
v.push_back(out);
}
vector下标操作只能针确认存在的元素操作 试图获取不存在元素将产生运行时错误
除了下标访问元素外,还可以使用迭代器遍历容器元素,标准库为每种元素定义了一个迭代器,
vector<int>::iterator ite; 其实迭代器类是指针,指向容器的某个元素
vector<int>::iterator ite=vector.begin();//指向vector的第一个元素
vector<int>::iterator ite=vector.end();//返回末端元素的下一个,并不指向真正的元素,表示容器的元素都处理完了
迭代器可使用解引用操作符(*操作符) 来访问迭代器所指向的元素 很类似指针
*ite =0;由end操作返回的迭代器不知向任何元素,一次不能对它进行解引用或自增操作
如果容器为空则begin返回的iterator和 end返回的不同
两种迭代器 iterator 和const_iterator 只读迭代器const_iterator
bitset 位集
bitset<n> b; b有n为 每位都为0
bitset<n> b(s) ,b是string对象s中含有的位串的副本
bitset<n> b(str,len,begin);//转入bieset还是反向的
string对象和bitset是反向转化的
string s="1100"
bitset<n> b(s);那么bitset的23位为1其余的为0
b.to_ulong有位集中同样的二进制位返回一个unsigned long类型的数据