[英]Generating a dynamic size dynamic container with STL algorithms
我想使用STL
算法頭生成一個容量大小未知的元素。 我想避免編寫自己的loop
。 這背后的動機是編寫表達性和安全的代碼,正如Kate Gregory在Pluralsight上的Beautiful C ++中所論證的那樣。
到目前為止,我的方法僅限於已知size
容器。 (我說的是動態容器)。
示例:
int expected_container_size = 10;
std::vector<int> dynamic_container;
dynamic_container.reserve(expected_container_size);
auto example_iota_generator = [n = 0]()mutable{return ++n; };
std::generate_n(std::back_inserter(dynamic_container), expected_container_size, example_iota_generator);
重復這個問題:
可以使用STL
算法生成非固定大小的動態容器嗎? 例如, last/largest
元素value
小於某些const n
的斐波那契序列;
先感謝您!
可以使用STL算法生成非固定大小的動態容器嗎? 例如,最后/最大元素值小於某些常數的斐波那契序列;
無論容器是否是動態大小,您確實可以使用算法將內容生成到任何容器中。
要擴展@ Slava的注釋,使用Range V3庫,您可以執行以下操作:
auto gen = [n = 0]() mutable { return ++n; };
auto filter = [](int val){ return val < 100; };
auto iotas = ranges::view::generate(gen) | ranges::action::take_while(filter);
std::vector<int> nums{ iotas.begin(), iotas.end() }; // 0, 1, 2, ... 99
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.