C 中的扁平化迭代器
考虑一个场景,其中您有一个容器的容器,例如向量
由于主要库中没有现有的扁平化迭代器实现,我们在下面提供一个基本实现:
#include <algorithm> #include <iostream> #include <set> #include <vector> template <typename OuterIterator> class flattening_iterator { public: // ... Iterator definitions and implementation private: void advance_past_empty_inner_containers() { // ... Advance logic } // ... Private members }; template <typename Iterator> flattening_iterator<Iterator> flatten(Iterator it) { // ... Return a flattening iterator for a single range } template <typename Iterator> flattening_iterator<Iterator> flatten(Iterator first, Iterator last) { // ... Return a flattening iterator for a range }
此实现使您能够以扁平化方式迭代嵌套容器,如以下示例所示:
// Generate some test data std::vector<std::vector<int>> v(3); int i(0); for (auto it(v.begin()); it != v.end(); ++it) { it->push_back(i++); it->push_back(i++); it->push_back(i++); it->push_back(i++); } // Flatten the data and print all the elements for (auto it(flatten(v.begin(), v.end())); it != flatten(v.end()); ++it) { std::cout << *it << ", "; }
此实现尚未实现经过彻底测试,建议在投入生产之前进行进一步测试。如果您遇到任何错误,请随时联系作者更正。
以上是如何在 C 中创建扁平化迭代器来迭代嵌套容器?的详细内容。更多信息请关注PHP中文网其他相关文章!