###実現したいこと
最小包囲長方形を求めたいです。
Rectangle bouding_rectangle
関数の中で以下のようなエラーが出る理由がわかりません。
また、この関数内で反復子it
を長方形のメンバとしたいそのやり方がわかりません。
###試したこと
この関数内で反復子
it
を長方形のメンバとしたいそのやり方がわかりません。
いくつか考えてみました。
(*it).lx=std::min...
it.lx=std::min...
どれもだめでした。
###エラー
error: declaration of 'auto it' has no initializer 47 | auto it; | ^~~~
###コード
C++
1//点集合の包囲長方形 2 3#include<iostream> 4#include<vector> 5#include<algorithm> 6 7//座標を表現するクラス 8struct Point 9{ 10 double x; //x座標 11 double y; //y座標 12}; 13 14//長方形を表現するクラス 15struct Rectangle 16{ 17 double lx; //左辺のx座標 18 double rx; //右辺のx座標 19 double dy; //下辺のy座標 20 double uy; //上辺のy座標 21}; 22 23//Rectangleに対する出力用の演算子 24std::ostream& operator<<(std::ostream& out,Rectangle r) 25{ 26 out<<"左辺のx座標"<<r.lx<<" 右辺のx座標"<<r.rx<<"下辺のx座標"<<r.dy<<"上辺のx座標"<<r.uy; 27 return out; 28} 29 30//比較関数 31bool compare_x(Point a,Point b) 32{ 33 return a.x<b.x; 34} 35 36bool compare_y(Point a,Point b) 37{ 38 return a.y<b.y; 39} 40 41//点集合の包囲長方形を計算する関数 42Rectangle bounding_rectangle(std::vector<Point>& points) 43{ 44 auto it; 45 it.lx=std::min_element(points.begin(),points.end(),compare_x); //左辺のx座標 46 it.rx=std::max_element(points.begin(),points.end(),compare_x); //右辺のx座標 47 it.dy=std::min_element(points.begin(),points.end(),compare_y); //下辺のy座標 48 it.uy=std::max_element(points.begin(),points.end(),compare_y); //上辺のy座標 49 return it; 50} 51 52int main() 53{ 54 int n; 55 std::cout<<"点の個数を入力してください\n"; 56 std::cin>>n; 57 58 std::vector<Point> pts; 59 pts.resize(n); 60 std::cout<<"点の座標を入力してください\n"; 61 for(Point& p:pts){ 62 std::cin>>p.x>>p.y; 63 } 64 65 std::cout<<"包囲長方形の座標は\n"; 66 67 Rectangle sq=bounding_rectangle(pts); //最小包囲長方形 68 std::cout<<sq; 69 std::cout<<"\n"; 70 71 return 0; 72}
> 反復子itを長方形のメンバとしたい
どういうことでしょうか?
回答1件
あなたの回答
tips
プレビュー