【发布时间】:2023-03-05 23:31:02
【问题描述】:
我有一种类型,可以定义为向量的向量 ... 整数类型的向量。示例:
std::vector<std::vector<std::vector<std::vector< std::vector<signed char> > > > > _data;
我正在寻找一种优雅的方法来确定更深层次的非空向量的数量。对于该示例,我可以使用 4 封装循环来做到这一点,例如
for (it0 = data.cbegin() ; it0 != _data.cend() ; ++it0)
for (it1 = *it0.cbegin() ; it1 != *it0.cend() ; ++it1)
for (it2 = *it1.cbegin() ; it2 != *it1.cend() ; ++it2)
for (it3 = *it2.cbegin() ; it3 != *it2.cend() ; ++it3)
nonEmpty += (unsigned int) (*it3.empty());
但是我怎样才能创建一个模板(以支持向量、列表或任何类型的容器共享相同的 API)函数来为任何深度(超过 4 级)做到这一点?我认为递归是正确的方法,但不知道如何使用 Template ...
欢迎所有帮助和建议,因为我很确定有不止一种解决方案。
【问题讨论】:
-
解决方案是否允许使用 C++11?
-
不是问题的一部分,仅限 C++98 !