簡體   English   中英

使用STL算法生成動態大小的動態容器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM