gpt4 book ai didi

不同类型 vector 上的 C++ 相同函数

转载 作者:行者123 更新时间:2023-11-30 00:50:05 25 4
gpt4 key购买 nike

我有一个非常简单的函数,可以打印 vector<double>计算。我有同样的功能需要 vector<int>反而。如果可能的话,我可以用一个函数替换它们吗?

void printv(vector<double> vec)
{
copy(vec.begin(),vec.end(), ostream_iterator<double>(cout," "));
cout << endl;
}

void printv(vector<int> vec)
{
copy(vec.begin(),vec.end(), ostream_iterator<int>(cout," "));
cout << endl;
}

如果有人建议专门用于打印任何类型的 vector 的解决方案,我对将 vector 保存到文件的功能有同样的问题,所以重点是一般问题,而不是专门与打印有关。

提前致谢!

最佳答案

当然。这就是 C++ 的意义所在。

template<typename T>
void printv(vector<T> const& vec)
{
copy(vec.begin(), vec.end(), ostream_iterator<T>(cout," "));
cout << endl;
}

只要 T 是“可输出流式传输”就可以工作。

注意:我已将 const& 添加到签名中以避免复制。


现在,您可以更进一步:

template<typename Container>
void print(Container const& c)
{
using std::begin;
using std::end;
using std::copy;

copy(begin(c), end(c), std::ostream_iterator<typename Container::value_type>(cout, " "));
cout << endl;
}

使其适用于所有标准容器,而不仅仅是 vector 。

关于不同类型 vector 上的 C++ 相同函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com