小编use*_*511的帖子

为什么std :: vector <char>比std :: string更快?

我写了一个小测试,我试图比较调整容器大小的运行速度,然后用std::generate_n它来填充它.我正在比较std::stringstd::vector<char>.这是程序:

#include <algorithm>
#include <iostream>
#include <iterator>
#include <random>
#include <vector>

int main()
{
    std::random_device rd;
    std::default_random_engine rde(rd());
    std::uniform_int_distribution<int> uid(0, 25);

    #define N 100000

#ifdef STRING
    std::cout << "String.\n";
    std::string s;
    s.resize(N);
    std::generate_n(s.begin(), N, 
                    [&]() { return (char)(uid(rde) + 65); });
#endif

#ifdef VECTOR
    std::cout << "Vector.\n";
    std::vector<char> v;
    v.resize(N);
    std::generate_n(v.begin(), N, 
                    [&]() { return (char)(uid(rde) + 65); });
#endif

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的Makefile:

test_string:
    g++ -std=c++11 -O3 -Wall -Wextra -pedantic -pthread …
Run Code Online (Sandbox Code Playgroud)

c++ string stl vector c++11

-1
推荐指数
2
解决办法
1564
查看次数

标签 统计

c++ ×1

c++11 ×1

stl ×1

string ×1

vector ×1