P5413,为什么会编译错误
  • 板块学术版
  • 楼主101hack3r
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/3/12 12:55
  • 上次更新2023/10/28 06:47:27
查看原帖
P5413,为什么会编译错误
502344
101hack3r楼主2022/3/12 12:55

代码:

#include <iostream>
#include <iomanip>
#include <cmath> 

using namespace std;

struct position
{
	double x, y, z;
};

double distance(position pos1, position pos2)
{
	return sqrt(pow((pos1.x - pos2.x), 2) + pow((pos1.y - pos2.y), 2) + pow((pos1.z - pos2.z), 2));
}

int main()
{
	unsigned n;
	cin >> n;
	double distsum;
	position curpos;
	cin >> curpos.x >> curpos.y >> curpos.z;
	for (unsigned i = 1;i <= n - 1;i++)
	{
		position pos;
		cin >> pos.x >> pos.y >> pos.z;
		distsum += distance(curpos, pos);
		curpos = pos;
	}
	cout << fixed << setprecision(3) << distsum << endl;
	return 0;
}

Dev-C++ GCC 4.9.2报的错:

In file included from %CppIncludeDir2%\c++\bits\stl_algobase.h:65:0,
                 from %CppIncludeDir2%\c++\bits\char_traits.h:39,
                 from %CppIncludeDir2%\c++\ios:40,
                 from %CppIncludeDir2%\c++\ostream:38,
                 from %CppIncludeDir2%\c++\iostream:39,
                 from D:\program\cplusplus\self\P5143.cpp:1:
%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h: In instantiation of 'struct std::iterator_traits<position>':
%CppIncludeDir2%\c++\bits\stl_iterator_base_funcs.h:114:5:   required by substitution of 'template<class _InputIterator> typename std::iterator_traits<_Iterator>::difference_type std::distance(_InputIterator, _InputIterator) [with _InputIterator = position]'
D:\program\cplusplus\self\P5143.cpp:28:34:   required from here
%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h:165:53: error: no type named 'iterator_category' in 'struct position'
       typedef typename _Iterator::iterator_category iterator_category;
                                                     ^

%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h:166:53: error: no type named 'value_type' in 'struct position'
       typedef typename _Iterator::value_type        value_type;
                                                     ^
%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h:167:53: error: no type named 'difference_type' in 'struct position'
       typedef typename _Iterator::difference_type   difference_type;
                                                     ^
%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h:168:53: error: no type named 'pointer' in 'struct position'
       typedef typename _Iterator::pointer           pointer;
                                                     ^
%CppIncludeDir2%\c++\bits\stl_iterator_base_types.h:169:53: error: no type named 'reference' in 'struct position'
       typedef typename _Iterator::reference         reference;
         

求助,这是什么错,求正确代码。

2022/3/12 12:55
加载中...