如何知道我的容器包了几层?
今天看到一个有趣的问题,请见下述例子:
cppvector<vector<int> > v2d; vector<vector<vector<string>> > v3d; vector<vector<vector<vector<double>>>> v4d;
如果给你 v2d
、 v3d
或是 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:搞图形的同志们应该会用得上~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论