gpt4 book ai didi

c++ - 使用对 vector 时出现无效、错误的数字模板参数错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:23 25 4
gpt4 key购买 nike

代码中有两种类型的错误基于 vector > vg(n)我无法纠正

  1. 在最后一行,即; return 0 语句有一个错误说“错误的模板参数数量(1,应该是 2)| 和一个 Line:87 链接到 STL 库,上面写着“provided for ‘template struct std::pair’
  2. 函数的第一行(第 7 行)表示模板参数无效

 #include <utility>
#include <cmath>
#include<cstdio>
#include <vector>

using namespace std

#define COMP(a,b,xx,yy)(sqrt(((a-xx)*(a- xx)) + ((b-yy)*(b-yy))))

double radius ( vector<pair<(int, int)> > vk, int ii, int n)
{ //error:template argument 1,2 is invalid
int d=n;
int xx=vk[ii].first;
int yy=vk[ii].second;
int k = ii==0? 1:0;

double small=COMP(vk[k].first,vk[k].second,xx,yy);
double dd;
for (int i=0;i<d; i++)
{
if (i!=ii)
dd=COMP(vk[i].first,vk[i].second,xx,yy);
{

if (small>dd)
small=dd;
}
}
return small;
}

int main()
{
int t,n=1;
int k=0;
double r,l;
//Enter the value of t
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);// Enter the value of n
vector <pair <int, int> > vg(n);

for (int i=0; i<n; i++)
{
scanf("%i %i",&vg[i].first,&vg[i].second);

//Enter the value of x and y co-odinates

}
for (int i=0; i<n; i++)
{
r=radius(vg,i,n);
l= (round(r*100.00))/100.00;


printf("%g\t%i\n",l);
}
}
return 0;
/* Error: wrong number of template arguments (1, should be 2)|
provided for ‘template<class _T1, class _T2> struct
std::pair’|*/
}

最佳答案

在您的函数声明中,移除 vector 模板类型两边的括号:

double radius ( vector<pair<int, int> > vk, int ii, int n)

一些注意事项:

  • 总是检查scanf的返回值
  • 避免按值传递 vectors
  • 比 C 风格的 printfs/scanf 更喜欢 C++ iostream
  • 用内联函数替换 COMP
  • 正确缩进代码

关于c++ - 使用对 vector 时出现无效、错误的数字模板参数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156149/

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