c – 这是组合std :: generate_n和std :: back_inserter的正确方
发布时间:2020-12-16 05:01:30 所属栏目:百科 来源:网络整理
导读:在我的任务:)尽可能多地使用STL我想知道是否可以使用std :: generate和std :: back_inserter组合,以便我可以执行与以下代码相同的操作: static const size_t nitems=1024*1024;std::string mrbig;for (size_t pos=0; posnitems; ++pos) mrbig.push_back('a'
在我的任务:)尽可能多地使用STL我想知道是否可以使用std :: generate和std :: back_inserter组合,以便我可以执行与以下代码相同的操作:
static const size_t nitems=1024*1024; std::string mrbig; for (size_t pos=0; pos<nitems; ++pos) mrbig.push_back('a'+ (rand()%26)); 我试过了 std::generate_n(std::back_inserter(mrbig),nitems,[](){return 'a'+(rand()%26);}); 它似乎工作正常,但我想确保我没有弄乱一些东西. 解决方法generate_n 要求其第一个参数满足
OutputIterator ,back_insert_iterator (其iterator_category为
output_iterator_tag ).
您的代码可能存在的问题: std::generate_n(std::back_inserter(mrbig),[](){return 'a'+(rand()%26);}); >调用mrbig.reserve(nitems)会更有效率 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |