gpt4 book ai didi

c++ - 在 C++ 中使用 vector

转载 作者:IT老高 更新时间:2023-10-28 21:59:55 27 4
gpt4 key购买 nike

我在使用以下代码时遇到问题,似乎无法找出问题所在

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

double distance(int a, int b)
{
return fabs(a-b);
}

int main()
{
vector<int> age;
age.push_back(10);
age.push_back(15);

cout<<distance(age[0],age[1]);
return 0;
}

错误在于函数距离的调用。

/usr/include/c++/4.6/bits/stl_iterator_base_types.h: In instantiation of ‘std::iterator_traits<int>’:
test.cpp:18:30: instantiated from here
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:166:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:167:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:168:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:169:53: error: ‘int’ is not a class, struct, or union type
/usr/include/c++/4.6/bits/stl_iterator_base_types.h:170:53: error: ‘int’ is not a class, struct, or union type

最佳答案

您正在尝试覆盖 std::distance 函数,尝试删除“using namespace std”并使用 限定 coutendl >std::

#include <iostream>
#include <cmath>
#include <vector>


double distance(int a, int b)
{
return fabs(a-b);
}

int main()
{
std::vector<int> age;
age.push_back(10);
age.push_back(15);

std::cout<< distance(age[0],age[1]);
return 0;
}

std::distance用于统计容器中指定范围内的元素个数。你可以找到更多关于它here .

或者如果你想引入 std:: 命名空间,你可以重命名你的距离函数:

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

double mydistance(int a, int b)
{
return fabs(a-b);
}

int main()
{
vector<int> age;
age.push_back(10);
age.push_back(15);

cout<<mydistance(age[0],age[1]);
return 0;
}

这将使您的代码正常工作,但不建议在定义之前使用“使用命名空间”声明。编写代码时,应避免使用第二种选择,此处仅作为代码示例的替代方法显示。

关于c++ - 在 C++ 中使用 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322310/

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