当前位置: 首页 > wzjs >正文

企业网站首页效果图wordpress 学院主题

企业网站首页效果图,wordpress 学院主题,济南优化网站方法,wordpress增加文章页面文章目录 C对数据结构使用自定义类1 QMap使用自定义类1.1 使用自定义类做key1.2 使用自定义类做value 2 QSet使用自定义类 参考 C对数据结构使用自定义类 1 QMap使用自定义类 1.1 使用自定义类做key QMap<key,value>中数据存入时会对存入key值的数据进行比较&#xff…

文章目录

  • C++对数据结构使用自定义类
    • 1 QMap使用自定义类
      • 1.1 使用自定义类做key
      • 1.2 使用自定义类做value
    • 2 QSet使用自定义类
  • 参考

C++对数据结构使用自定义类

1 QMap使用自定义类

1.1 使用自定义类做key

QMap<key,value>中数据存入时会对存入key值的数据进行比较,并按照比较后的顺序进行排序存储,因此需要重载运算符函数<

实例如下:

struct Animal{Animal(int size, int area):m_size(size),m_area(area){}~Animal(){}//重载运算符函数bool operator<(const Animal &a) const //注意这里的两个const{if(m_size == a.m_size){return m_area > a.m_area;}else{return m_size > a.m_size;}}int m_size;int m_area;};
QMap<Animal, int> g_AnimalTypeHash;int main(int argc, char *argv[])
{QApplication a(argc, argv);Animal tmpA1 = Animal(20, 1);g_AnimalTypeHash[tmpA1] = 2;return a.exec();
}

1.2 使用自定义类做value

QMap<key,value>中,当自定义类为value,每当赋值时,都会用到默认构造函数、拷贝构造、赋值运算符函数。如果没有重写构造函数,则编译器会帮忙编写上面的函数。

实例如下:

struct Animal{int m_size;int m_area;};QMap<int, Animal> g_AnimalTypeHash2;
int main(int argc, char *argv[])
{QApplication a(argc, argv);Animal tmpB1;tmpB1.m_size = 1;tmpB1.m_area = 2;g_AnimalTypeHash2[2] = tmpB1;return a.exec();
}

如果自己重写了构造函数,则需要重新编写拷贝构造、赋值运算符、析构函数。

实例如下:

struct Animal{Animal(){}Animal(int size, int area):m_size(size),m_area(area){}~Animal(){}Animal(const Animal& a){//拷贝构造this->m_size = a.m_size;this->m_area = a.m_area;qDebug()<<"拷贝构造";}Animal& operator =(const Animal& a) //赋值运算符{if (this != &a){this->m_size = a.m_size;this->m_area = a.m_area;}qDebug()<<"赋值运算符";return *this;}int m_size;int m_area;};QMap<int, Animal> g_AnimalTypeHash2;int main(int argc, char *argv[])
{QApplication a(argc, argv);Animal tmpA1 = Animal(20, 1);g_AnimalTypeHash2[2] = tmpA1;return a.exec();
}

2 QSet使用自定义类

使用自定义类做映射类型,必须重写赋值==运算符函数和编写全局的qHash函数,因为QSet是基于QHash实现的(哈希表)。而且QHash存储的必须是值,不能是指针类型。

以下为官方解释:

在这里插入图片描述

错误的例子:

struct Animal{bool operator<(const Animal &a) const //注意这里的两个const{if(m_size == a.m_size){return m_area > a.m_area;}else{return m_size > a.m_size;}}int m_size;int m_area;};int main(int argc, char *argv[])
{QApplication a(argc, argv);QSet<Animal> animalsSet;Animal animal;for(int i = 0;i < 10;i++){animal.m_size = i;animal.m_area = i*i;animalsSet.insert(animal);}return a.exec();
}    

编译器会爆出如下的错误:

1,error: no matching function for call to 'qHash(const Animal&)' ,;

2,error: no match for 'operator==' (operand types are 'const Animal' and 'const Animal');

正确的示例如下:

struct Animal{bool operator==(const Animal &a) const{if(m_size == a.m_size){return m_area > a.m_area;}else{return m_size  > a.m_size;}}int m_size;int m_area;};uint qHash(const Animal& a)
{return a.m_area + a.m_size;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);QSet<Animal> animalsSet;Animal animal;for(int i = 0;i < 10;i++){animal.m_size = i;animal.m_area = i*i;animalsSet.insert(animal);}return a.exec();
}

参考

QSet Class
用QSet存储一个自定义结构体

http://www.dtcms.com/wzjs/534360.html

相关文章:

  • 鞍山网站制作报价网站颜色背景代码
  • 智谋网站优化公司有什么做设计接任务的网站
  • 直播网站建设重庆网站建设检查整改情况报告
  • 网站开发服务费会计分录建设部网站水利设计资质
  • 网站图标怎么换特微网站首页
  • 河南省住房和城乡建设厅查询网站wordpress模版目录
  • 中国建设银行官方网站下载wordpress花园商城
  • 免费行情软件网站下载过年做哪些网站能致富
  • 禅城网站建设公司关于申请网站建设经费的报告
  • 个人网站制作的选题意义移动网站建设制作公司
  • 网站维护方法个人网页设计作品 html模版
  • 网站的服务器是什么购买马来网站域名
  • 政务移动门户网站建设方案什么网站做推广农产品比较好
  • 网站301是什么意思物流官网网站
  • 北京国都建设集团网站没有备案的网站怎么访问
  • 在windows2003上做网站wordpress注册邮箱失效
  • 东莞做网站软件手机网页制作工具下载
  • 赣州网站制作培训网站建设标书模板下载
  • 什么蓝色 适合公司网站主色外贸企业网站制作
  • 《水利建设与管理》杂志社网站wordpress获取当前分类不带连接
  • 网站设计步骤和方法绿植行业做网站的
  • 网站其它方面seo情况小程序码
  • 网站运营一个月多少钱南阳做网站优化的公司
  • 东莞企业网站设计公司品牌营销策划方案怎么做才好
  • 做百度推广的网站吗wordpress搬家lnmp
  • 青海wap网站建设网站建设感受
  • 微信小程序 购物网站开发全国企业公示网查询官网
  • 小企业网站建设口碑怎么在公众号做影视网站
  • 成都高端网站建设公司哪家好trinseo公司
  • 网站关键词 价格生成厦门网站开发培训