如何知道我的容器包了几层?

pezy

今天看到一个有趣的问题,请见下述例子:

cppvector<vector<int> > v2d;
vector<vector<vector<string>> > v3d;
vector<vector<vector<vector<double>>>> v4d;

如果给你 v2dv3d 或是 v4d,你如何求得它们所包裹的层数?


万能的模板又要上场了:

cpptemplate<class Y> 
struct s
{
    enum {dims = 0};
};

template<class Y>
struct s<std::vector<Y>>
{
    enum {dims = s<Y>::dims + 1};
};

来测试一下吧:

cppstd::vector<std::vector<double> > x;
int n = s<decltype(x)>::dims; // n == 2;

这都属于 “乍看不难,细思恐极,模板棒喝” 的典型工程问题。。。

PS:搞图形的同志们应该会用得上~

阅读 2.4k

一个 C++ 程序员

3.1k 声望
330 粉丝
0 条评论

一个 C++ 程序员

3.1k 声望
330 粉丝
文章目录
宣传栏