【发布时间】:2018-08-20 11:57:08
【问题描述】:
我写了一个函数来打印给定的vector。
template <typename T>
void print_vector(std::string text, std::vector<T> &vect){
std::cout << ">>>>>>>>>> " << text << " <<<<<<<<<<" << std::endl;
for(T &t: vect){
std::cout << t << ", ";
}
std::cout << std::endl << "--------------------" << std::endl;
}
但是当我给函数一个 vector 或 shared_ptr 时,它会打印地址,而不是指向的值。
当元素是shared_ptr..时,有没有办法打印值?
我尝试了以下方法,但它给了我一个编译错误,我无法弄清楚如何修复它。
template <typename T, typename F>
void print_vector(std::string text, std::vector<T> &vect){
std::cout << ">>>>>>>>>> " << text << " <<<<<<<<<<" << std::endl;
for(T &t: vect){
if(std::is_same<T, std::shared_ptr<F>>::value) {
std::cout << *t << ", ";
} else {
std::cout << t << ", ";
}
}
std::cout << std::endl << "--------------------" << std::endl;
}
【问题讨论】:
标签: c++ c++11 vector smart-pointers