gpt4 book ai didi

c++ - 如何在以指针作为参数的 header 中声明函数?

转载 作者:行者123 更新时间:2023-11-30 05:35:52 24 4
gpt4 key购买 nike

到目前为止,我已经解决了相当多的欧拉问题,并且一直在考虑一种更聪明的方法来重用我为早期问题编写的函数。所以我想制作一个包含我所有有用功能的头文件。到目前为止,我已经能够成功地将它包含在我的头文件中而没有任何错误。

#include <cmath>
bool isPrime(long int n)
{
if( n<=0 ) return false;
if( n==1 ) return false;
else if( n < 4 ) return true;
else if( n%2 == 0 ) return false;
else if( n<9 ) return true;
else if( n%3 == 0 ) return false;

else{
int r = floor(sqrt(n));
int f = 5;
while( f <= r ){
if(n%f == 0) return false;
if(n%(f+2) == 0) return false;
f += 6;
}

return true;
}
}

现在我想添加一个函数来打印出可以保存任何类型变量的 vector 的内容,所以我想在我的头文件中做这样的事情,

#include <iostream>
#include <vector>

template <typename T>
T printVec(vector<T>* a){
for(int i=0; i<a->size(); i++)
cout << a->at(i) << ", ";
cout << endl;
}

但是这有一些问题,就是不喜欢模板并且它提示 a 没有被声明?

你能告诉我如何完成这项工作吗?

谢谢

最佳答案

std:: 缺失:

也有改进,const引用比指针好

template <typename T>
void printVec(const std::vector<T>& a) {
for (std::size_t i = 0; i != a.size(); ++i) {
std::cout << a.at(i) << ", ";
}
std::cout << std::endl;
}

甚至(在 C++11 中)

template <typename T>
void printVec(const std::vector<T>& a){
for (const auto& e : a) {
std::cout << e << ", ";
}
std::cout << std::endl;
}

void printVec(const std::vector<T>& a){
std::copy(a.begin(), a.end(), std::ostream_iterator<T>(std::cout, ", "));
std::cout << std::endl;
}

关于c++ - 如何在以指针作为参数的 header 中声明函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735747/

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