如何解决在编译时展开嵌套向量
我正在尝试解决展开嵌套向量的问题,例如 vectorint
元素。这是我写的
#include <iostream>
#include <type_traits>
#include <vector>
template<typename S>
void print(S);
template<typename T,typename S>
void decode(T container) {
if(std::is_same<T,S>::value)
print<S>(container);
else{
for(auto i : container){
decode<decltype(i),S>(i);
}
}
}
template<typename S>
void print(S ele){
std::cout<<ele<<" ";
}
int main(){
std::vector<std::vector<std::vector<int>>> a = {{{1,2,3},{4,5}}};
decode<decltype(a),int>(a);
}
但它正在显示
nested_vector_decoder.cpp: In instantiation of ‘void decode(T) [with T = std::vector<std::vector<std::vector<int> > >; S = int]’:
nested_vector_decoder.cpp:26:28: required from here
nested_vector_decoder.cpp:11:12: error: cannot convert ‘std::vector<std::vector<std::vector<int> > >’ to ‘int’
11 | print<S>(container);
| ^~~~~~~~~
| |
| std::vector<std::vector<std::vector<int> > >
nested_vector_decoder.cpp:20:14: note: initializing argument 1 of ‘void print(S) [with S = int]’
20 | void print(S ele){
我不明白为什么我会看到这个错误,因为我已经在 compile container
检查它是否是 int
或不是 if(std::is_same<T,S>::value)
,谁能解释我>
错误信息是否应该作为警告信息。
是的,我确实看到了有关展开嵌套向量的答案,但我想知道我做错了什么,内部是如何工作的,以便我能够理解它。
谢谢。
在c++中运行时也可以进行这种操作吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。