不知道是谁 2020-04-13 21:42 采纳率: 0%
浏览 599
已采纳

c++ 使用vector的问题

设计基本图形类
类点CPt、 线(CLn);点是线的成员数据,用 vector 容器,在线上实现如下操作:
(1)在 p 位置前加入新点。
(2)删除 p 位置的点。
(3)修改 p 点的坐标。
(3)返回点数。
(p是传入的序号参数)

  • 写回答

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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月3日

悬赏问题

  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作