关于字符串string的一些用法记录
String作为参数传参的时候,因其本身可以看作是一个指向字符串的指针,所以,我们在
使用的时候,需要加&表示传递指针的地址,如果不加则会报错。当然你也可以使用指针的
用法,加*号,指向指针的指针。
对于容器的操作,其实是重载运算符得到的,和string类似,是定义了一个堆容器进行操作的iterator类,目的是为了让我们可以使用和指针相同的语法,也就是泛型指针,目的是为了这种“指针”可以对容器类型都成立。
其定义方式为:
vector<string> ::iterator iter = vec.begin();
vector<string> :: const_iterator ter = vec.begin(); //vec定义为const型,只读。
声明了一个iterator指向vec,类型为string,并且指向第一个元素。
iter.begin() :返回一个iterator,指向第一个元素
iter。end() :返回一个iterator,指向最后一元素的下一个位置
stl里的容器vector相当于数组,list相当于链表
首先共同点:
用来维护一组排列有序、类型相同的元素。vector是连续的,如果想在中间插入元素的话,需要把该位置之后的
元素都往后移,如果想对非最后一位进行删除操作的话,需要往前移到删除位置。其间,元素的依赖性不强,
对其进行访问操作非常简便。
list 是每个元素中包含指向前后的指针,也就是包含了前后位置 的信息,也就是元素之间的依赖性强,对其进行
随机访问操作挺麻烦的,从第5个跳到第11个元素,需要经历其中所经过得元素不能跳过,这个就没有vector那么
方便了,当然,在插入和删除方面,它又显得得心应手。
deque类型,应该是相当于,连续空间之前使用指针连接,这样删除也很方便。
对元素得操作有一些函数可以使用
push_back()
pop_back();
push_front();
pop_front()
front()
back();
insert()有几种变型:
1.iterator insert(iterator position ,elemType value)
可将value安插在position之前,并指向被安插的元素。
2.void insert(iterator position ,int count,elemType value)
可将value值安插count个在position之前的位置。
3.void insert(iterator1 position,iterator2 first,iterator2 last)
可position之前插入(first,last)元素
4.iterator insert(iterator position)
插入默认值
erase(iterator position)
删除 位置为position的元素
erase(iterator first,iterator last)
删除【first,last】地址之间范围内的元素
map :键 + 值
定义一个map,例如:
map<string,int> w;
w["dasd"] = 1; //添加一个索引,键:dasd 值:1
查询某个键是否在索引当中的方法:
1.int count = 0;
if ( ! (count = w["vec"]))
//表明vec不在w内
它有一个缺点,就是,你执行这一次判断后,vec已经加入w的索引内了,下次再进行判断就显示在w内了。
2。 利用map的find函数,传入key返回iterator指向key value 形成一个pair(对指针),不在则返回end();
int count = 0;
map<string, int>::iterator it;
it = w.find("sdad");
if(it != w.end())
count = it->second;
3。 返回特定项目在map中的个数
int count = 0;
string search_word("afaa");
if(w.count(search_word))
count = w[search_word];
set 表示一个集合。