设计基本图形类
类点CPt、 线(CLn);点是线的成员数据,用 vector 容器,在线上实现如下操作:
(1)在 p 位置前加入新点。
(2)删除 p 位置的点。
(3)修改 p 点的坐标。
(3)返回点数。
(p是传入的序号参数)
c++ 使用vector的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 白色一大坨 2020-04-13 22:36关注
随便写了写,大概这个意思吧,你自己调一下看看
#include<iostream> #include<vector> using namespace std; class CPt { public: int x; int y; }; class CLn { vector<CPt> pvec; public: bool InsertP(int p, CPt inp) { if (p>= pvec.size() && pvec.size() > 0) return false; if (pvec.size() == 0) { pvec.push_back(inp); } else { vector<CPt>::iterator ite; int i=0; for(ite=pvec.begin();ite!=pvec.end();++ite) { if(p == i) { pvec.insert(ite,inp); break; } i++; } } } bool DeleteP(int p) { if (p>= pvec.size()) return false; vector<CPt>::iterator ite; int i=0; for(ite=pvec.begin();ite!=pvec.end();) { if(i==p) ite=pvec.erase(ite); else ++ite; i++; } } bool ModifyP(int p, CPt inp) { if (p>= pvec.size()) return false; pvec[p] = inp; return true; } int GetCount() { return pvec.size(); } }; int main() { CLn Line; CPt p1,p2,p3; cout<<"插入三个点"<<endl; p1.x = 1; p1.y = 2; Line.InsertP(0, p1); p2.x = 2; p2.y = 4; Line.InsertP(0, p2); p3.x = 3; p3.y = 6; Line.InsertP(0, p3); cout<<"当前点数量"<< Line.GetCount() <<endl; Line.DeleteP(1); cout<<"删除一个点后数量"<< Line.GetCount() <<endl; p1.x = 10; p1.y = 20; Line.ModifyP(0, p1); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 matlab中使用gurobi时报错
- ¥15 WPF 大屏看板表格背景图片设置
- ¥15 这个主板怎么能扩出一两个sata口
- ¥15 不是,这到底错哪儿了😭
- ¥15 2020长安杯与连接网探
- ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
- ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
- ¥16 mybatis的代理对象无法通过@Autowired装填
- ¥15 可见光定位matlab仿真
- ¥15 arduino 四自由度机械臂