我写了一个小测试,我试图比较调整容器大小的运行速度,然后用std::generate_n它来填充它.我正在比较std::string和std::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)