不知道是谁 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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里