Effective STL 2020-08-11

2020-08-11  本文已影响0人  liyangyao

第5条 区间成员函数优先于与之对应的单元素成员函数

container::container(begin, end)
void container::insert(position, begin, end)
//序列容器
iterator container::erase(begin, end)
//关联容器
void container::erase(begin, end)
void container::assign(begin, end)

第9条 慎重选择删除的方法

    c.erase(remove(c.begin(), c.end(), 1963), c.end())
    //满足特定条件的的所有对象
    v1.erase(std::remove_if(v1.begin(), v1.end(), [](int v)
    {
        return v==2 || v==3;
    }), v1.end());

    for(auto it = v1.begin(); it != v1.end(); )
    {
        if (*it == 2 || *it == 3)
        {
            it = v1.erase(it);
        }
        else{
            it++;
        }
    }
c.remoe(1963)
c.erase(1963)
//满足特定条件的的所有对象
for(auto it = c.begin(); it != c.end(); )
{
    if (it->first == 2 || it->first == 3)
    {
        c.erase(it++);
    }
    else{
        ++it;
    }
} 

第17条 使用"swap技巧"除去多余的容量

vector<int>(v).swap(v);

第23条 考虑用排序的vector替代关联窗口

//代码骨架
sort(v.begin, v.end)
if (binary_search(v.begin, v.end)) ...
auto i = lower_bound(v.begin, v.end)
auto range = equal_range(v.begin, v.end)
if (range.first != range.second)
{
    qDebug()<<"find, distance:"<< distance(range.first, range.second);
}
上一篇 下一篇

猜你喜欢

热点阅读