C++学习_杂项

一,string

1,与vector类似,string也面临重新分配空间的问题, 也有reserve(), capacity(),等一系列函数, 不过一个差别是string的reserve可以缩小容量,而vector不行

2,string 也支持iterator,但string中的find等函数并不返回iterator,而是size_t (string::size_type)

3,string的一大不方便之处在于没有split函数, 现实现一个版本如下:

void split(string str, vector<string>& vec,string sep="#")
{
        size_t beg,end;
        beg=0;
        end=str.find(sep,beg);
        size_t len=sep.size();
        while(beg!=string::npos)
        {
                vec.push_back(str.substr(beg,end-beg));
                beg= end!=string::npos ? end+len :end;
                end=str.find(sep,beg);
        }
}

4,string的replace方法不支持"将某一旧串替换成新串",可以用STL算法replace

replace(str.begin(),str.end(),"old_str","new_str");


二, 迭代器 iterator

1,STL把迭代器分的比较细, 但一般来说我们需要关注的只有两类: 随机读写迭代器和非随机的,  前一种的应用有vector, deque, string和数组, 后一种是指各种关联容器和list如set,map等

2,如果使用iter和algorithm 进行编程,需要注意一些可能使迭代器失效的操作, 通常的解决办法是reserve一个足够大的空间

3,一些STL算法使用的迭代器需要迭代器配接器, STL提供以下三种配接器:

    a) back_inserter : 执行push_back操作

    b)front_inserter: 执行push_front操作

    c)insert 执行erase操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值