美文网首页
Effective STL 2020-08-11

Effective STL 2020-08-11

作者: liyangyao | 来源:发表于2020-08-11 22:25 被阅读0次

第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条 慎重选择删除的方法

  • 连续内在窗口,最好的办法是使用erase-remove习惯用法
    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++;
        }
    }
  • 对于list,成员函数remove更加有效
c.remoe(1963)
  • 对于标准关联窗口(set, multiset, map, multimap),正确方法是调用erase
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);
}

相关文章

  • Effective STL 2020-08-11

    第5条 区间成员函数优先于与之对应的单元素成员函数 区间创建 区间插入 区间删除 区间赋值 第9条 慎重选择删除的...

  • 常用的 STL 查找算法

    常用的 STL 查找算法 《effective STL》中有句忠告,尽量用算法替代手写循环;查找少不了循环遍历,在...

  • EFFECTIVE+STL中文版:50条有效使用STL的经验

    《Effective STL中文版:50条有效使用STL的经验》是EffectiveC++的第3卷,被评为“值得所...

  • 任务列表

    C++ 《C++ primer》、《STL源码解析》、《effective C++》、《深度搜索c++对象模型》 ...

  • 【Effective STL】索引

    本书针对性地介绍标准库容器和算法的使用准则,但不是STL的参考教程,读者需要有一定STL使用经验。参考The C+...

  • effective stl总结

    得注意进度了,稍微写快一点得 条款15:小心string实现的多样性1.一个小问题,sizeof(string)的...

  • Effective STL - 引言

    揭开使用STL时各 陷阱的 来源 / 解决方案的优劣 接口与实现分离: 对于STL, 不能简单地使用这条规则原因:...

  • 【Effective STL(7)】使用STL编程

    43 尽量用算法调用代替手写循环 很多要用循环来实现的任务可以改用算法来实现,算法内部也包含一个循环 使用算法有三...

  • 【Effective STL(5)】算法

    30 确保目标区间足够大 STL容器在被添加时(通过insert、push_front、push_back等)自动...

  • 【Effective STL(1)】容器

    01 仔细选择你的容器 02 小心对“容器无关代码”的幻想 序列容器支持push_front、push_back,...

网友评论

      本文标题:Effective STL 2020-08-11

      本文链接:https://www.haomeiwen.com/subject/hlcudktx.html