zoukankan      html  css  js  c++  java
  • Effective STL 学习笔记: 多用 vector & string

    Effective STL 学习笔记: 多用 vector & string

    如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string 。

    原书作者唯一想到的一个不用 string 的可能的理由,就是 string 所使用的引用计数 (reference counting) 在多线程下可能会因为并发控制反而导致性能下降。我们可以通过查看文档或者 STL 源面的方法来看 String 是否引入了引用计数,如果 string 在多线程下真的因为引用计数而导致了性能下降,我们可以通过下面的方法来避免:

    1. 看是否可以通过某些方法来禁用引用计数,例如条件编译
      该方法可移植性不佳,但最简单。
    2. 看是否有 string 的非引用计数替代品。
    3. vector<char> 来替代 string
      虽然这样可能会导致很多 string 专属的成员函数不能用,但大多的函数都可以通过 STL 算法来替代。
    #include <vector>
    #include <stdio.h>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        vector<char> ss;
        char c = 'a';
        while (c < 'z') {
            ss.push_back(c);
            c++;
        }
    
        char* p = ss.data();
        fprintf(stderr, "p = %s
    ",p);
        return 0;
    }
    

    Output:

    ~/tmp $ g++ test.cpp -o test
    ~/tmp $ ./test
    p = abcdefghijklmnopqrstuvwxy
    
  • 相关阅读:
    【Mysql】日期时间格式化
    【CSS】css网页背景图片设置
    【C#】【Thread】SynchronizationContext线程间同步
    love2d--glsl03噪声
    love2d--glsl02变量和语句
    love2d--glsl01简单的渲染
    love2d 0.9发布
    工作感受
    本系列love2d示例代码错误集中整理
    一些lua代码
  • 原文地址:https://www.cnblogs.com/yangyingchao/p/3397951.html
Copyright © 2011-2022 走看看