高放的c++学习笔记之关联容器】的更多相关文章

标准库提供8个关联容器 按关键字有序保存有(红黑树实现) set map multset 关键字可重复出现的set multimap  关键字可重复出现的map 无序保存 哈希实现 unorderred_map unorderred_set unorderred_multimap unorderred_multiset map是一个个pair类型组成 map<int, int>mp; for(auto i : mp){ printf("%d %d\n", i.first,…
条款19:理解相等(equality)和等价(equivalence)的区别 相等的概念是基于 operator== 的,如果 operator== 的实现不正确,会导致并不实际相等等价关系是以"在已排好序的区间中对象值的相对顺序"为基础的,关联容器默认是以 operator< 为基础此时 w1 和 w2 若相等,则有 !(w1 < w2) && !(w2 < w1),或者使用函数对象 !container.comp(x, y) &&…
python与c++的不同之处 python的语句块不是用{}括起来的而是冒号后面跟一些与比当前语句多一的tab缩进的语句. 1.定义变量 python的变量类型不需要人为指出,会根据赋值的类型决定此变量的类型. 例如 a = 1 //此时a是int类型 print a b = 'gaofang' //此时b是字符串型 2.if判断语句 写法 if 条件: 语句 elif 条件: 语句 else: 语句 实例 if a > 0: print 'a = 1'elif a >= 1: print…
函数模板 作用 有很多时候参数的类型以及返回值的类型是可变的,我们通过定义模板来让函数能更灵活的运用. 我们设计一个比较函数,如果能比较的两个参数是int型的,两个参数也可能都是string型的,单独设计出两个比较的函数就会比较繁琐,此时,我们用到了函数模板.template<typename T>int cmp(T a, T b){ return a>b;} (1)每次调用的时候,编译器用推断出的模板参数来为我们实例化一个特定版本的函数,T可被替换成任意类型.(2)template可被…
▲基本概念 (1)重载运算符是具有特殊名字的函数,它们的名字又operator和其后要定义的运算符号共同构成.. (2)对于一个运算符号来说它或者是类的成员,或者至少含有一个类类型的参数. (3)我们只能重载已有的运算符,而无权发明新的运算符 ▲调用重载的运算符函数类外的重载运算符 a+b等同于operator+(a,b) 类内的重载运算符a+b等同于a.operator+(b); class gaofang{public : int x, y; int operator+ (gaofang&…
类的基本思想是数据抽象和封装1.this 成员函数通过一个名为this的额外隐式参数来访问调用它的对象,当我们调用一个函数的时候,用请求该函数的对象的初始化this. 如果某个类的名字为sale,某个对象为total,成员函数为isbn total.isbn()可以理解成sale::isbn(total); 任何自定义名为this的行为都是非法的. 因为this总是指向"这个”对象,所以this是一个常量指针,我们不允许改变this指向的地址. 定义一个返回this的类 class sale{p…
局部变量 函数里面的局部变量有普通的局部变量和局部静态变量两种. 普通局部变量变量就是正常定义在函数体内部的变量,如果返回局部变量的地址,以便于函数调用结束后还继续访问此变量的话,编译器会报warning,本身这种行为也是错误的,因为函数调用结束后此变量的内存会被释放掉. 局部静态变量会在第一次定义的时候赋给一个初值,之后的调用过程中值会保持原来的值. 例如 int print(){ static int a = 1; printf("%d\n", a++);} 参数传递 总结出以下几…
lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代, 通常结构是这样的[捕获列表](参数列表){函数部分} 捕获列表: lambda表达式如果在一个函数里面,如果想要使用函数里面的变量的话,那么必须要将使用的变量写在捕获列表里面: 也就是说: void cmp(){ int a; [](){return a;};} 是通不过编译的 只能这样: void cmp(){ int a; [](){return a;};} 如果lambda表达式在类的…
MyBatis:学习笔记(3)--关联查询 关联查询 理解联结 SQL最强大的功能之一在于我们可以在数据查询的执行中可以使用联结,来将多个表中的数据作为整体进行筛选. 模拟一个简单的在线商品购物系统,如果我们将用户信息和订单信息都保存在user表中,这样就不存在联结关系,因为我们仅仅操作一张表就好. 但是这是非常不明智的选择,举例来说,一个用户可以拥有多个订单,如果保存在一个表中,势必会导致用户信息的多次出现,因为每个订单绑定的用户信息都是相同的. 所以我们尽量要将不同的信息存储与不同的表中,但…
转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器规划 二.数据库服务器的安装 三.Rancher Server HA1的安装 四.Rancher Server HA2的安装 五.HAProxy 负载均衡器的安装 六.注册主机(工作主机) 七.参考链接(视频) 本文主要以Rancher培训视频为基础,做了学习笔记,方便自己日后查看.Rancher…
Go学习笔记06-内建容器 Go语言 数组 *切片(Slice) #F44336 Slice的操作 Map map示例 字符处理 数组 定义数组: //这样定义数组编译器自动初始化每个元素为0  var arr1 [5]int  //这样定义数组需要手动初始化数组  arr2 := [3]int{1, 3, 5}  //这样可以让编译器自动计算数组长度  arr3 := [...]int{2, 4, 6, 8, 10}  //定义二维数组  var grid [4][5]bool  ·数量写在类…
keepalived完全遵守VRRP协议包括竞选机制,至于VRRP是什么这里不说了参考http://wenku.baidu.com/link? url=1UbkmHuQlGECgC90P7zF6u2xYyifLK0F-G_7pehNVUitZZExISjZ- B22TJKKGyYIZXh9X7uULA8lA1nKw0NsyNGelrt_yQ317knkVyjwCqW,不同的是VRRP里的路由器在keepalive中变成服务器 vrrp的术语:虚拟路由器.VRID.Master.Backup.VI…
一.一对一 mybatis处理一对一主要通过<resultMap>中的<association>元素来处理. <association>元素主要使用方方式有两种: <!--方式一 嵌套查询--><association property = "card" column = "card_id" javaType = "com.mybatis.associateMapping.IdCard" se…
一.一对多查询 需求:查询所有订单信息,关联查询下单用户信息. 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询.如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单.   sql语句: SELECT o.id, o.user_id userId, o.number, o.createtime, o.note, u.username, u.address FROM `order` o LEFT JOIN `user` u…
Set和Multisets set和multiset会根据特定的排序准则,自动将元素排序.两者不同在于multisets允许元素重复而set不允许. 1.set和multiset的操作函数 生成.复制和销毁 set c //产生一个空的set/multiset,其中不含任何元素 set c(op) //以op为排序准则,产生一个空的set/mulitset set c1(c2) //产生某个set/multiset的副本,所有元素均被复制 set c(beg,end) //以区间[beg;end…
1.ReentrantLock的简单使用 Reentrant n.再进入 ReentrantLock 一个可重入互斥Lock具有与使用synchronized方法和语句访问的隐式监视锁相同的基本行为和语义,但具有扩展功能.(从jdk1.8中文版复制而来) 可以完成synchronized相同的作用,但必须手动释放锁 package com.dingyu2; import java.util.concurrent.locks.Lock; import java.util.concurrent.lo…
1.同一个资源,同步和非同步的方法可以同时调用 package com.dingyu; public class Y { public synchronized void m1() { System.out.println(Thread.currentThread().getName() + " m1 begin---------"); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-g…
import static java.lang.System.out; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.LinkedList; import java.…
在这一章中,有以下的几点收获: 1.pair类型的使用相当频繁,如果需要定义多个相同的pair类型对象,可考虑利用typedef简化其声明: typedef pair<string, string> A;这样,在后面的使用中就可以直接用A来代替前面繁琐的书写. 2.三种方法创建pair对象: (1)第一种方法:使用函数make_pair() pair<string, string> spair; string first, last; while(cin >> firs…
现在的PHP应用程序都是面向对象开发,所以主要是由对象构成.有的对象可以方便的分发邮件信息而有的可能帮你把信息写入到数据库中.在你的应用程序中,你可能创建一个对象用于管理你的产品库存,或者另外一个对象处理来自第三方API的数据.重要的是现在应用程序要做的这些事情都是被组织到许许多多的对象中来处理它的每一项任务的. 我们将套路一下Symfony2中一个特殊的PHP对象,它帮助我们实例化,组织和获取你应用程序汇总的许多对象.这个对象叫做服务容器,它可以帮助你使用标准统一的方式来创建你程序中的对象.它…
0x00 概述 在互联网时代,网络已经成为绝大多数应用进行数据交换的主要通道,Docker 作为集群部署的利器,在网络支持上也下了许多功夫.功能丰富和强大,并不代表使用复杂,在 Docker 的封装下,我们依然可以通过命令和参数轻松的为容器制定不同的网络方案.在这一节中,我们就来了解 Docker 的网络部分. 0x01 容器网络 在之前介绍 Docker 核心组成的时候,我们已经简单谈到了容器网络的相关知识.容器网络实质上也是由 Docker 为应用程序所创造的虚拟环境的一部分,它能让应用从宿…
通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并告诉容器所注册的服务由那一个类来实现他.通常建立容器我们可以用以下定义来实现: 双击代码全选 1 1IWindsorContainer container = new WindsorContainer(); 2.加入组件 向建立好的容器里加入组件,直接调用容器的AddComponent()来完成.比如现在有一…
1.vector vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.故可以将vector看作动态数组. 在创建一个vector后,它会自动在内存中分配一块连续的内存空间进行数组存储,初始的空间大小可以预先指定也可以由vector默认指定,这个大小即capacity()函数的返回值,当存储的数据超过分配的空间时,vector会重新分配一块内存. 重新分配内存的动作: (1)申请一块更大的内存 (2)将原来的数据复制到新的内存块中 (3)销毁掉原内存块中的对象 (4)…
using System; using System.Collections.Generic; namespace ConsoleApplication { class Program { static void Main(string[] args) { Dictionary<string, int> a = new Dictionary<string, int>(); a.Add(); a[; a.Add(); foreach (KeyValuePair<string,…
using System; using System.Collections.Generic; namespace ConsoleApplication { class Program { static void Main(string[] args) { LinkedList<int> a = new LinkedList<int>(); a.AddFirst(); a.AddLast(); a.AddLast(); foreach (int i in a) Console.Wr…
using System; using System.Collections.Generic; namespace ConsoleApplication { class Program { static void Main(string[] args) { List<int> a = new List<int>(); a.Add(); //顺序增加 a.Add(); a.Insert(, ); //第2个位置插入1 foreach (int i in a) Console.Writ…
http://www.cplusplus.com/reference/list/list/ #include <list> list l:初始化一个0大小的表 list l(10):初始化一个10个大小的表 empty:是否为空 size:大小 max_size:可分配的最大值 front:第一个元素 back:最后一个元素 push_front:插入到第一个 pop_front:弹出第一个 push_back:插入到最后 pop_back:弹出最后一个 insert:插入到某个位置 clea…
vector v:初始化一个0大小的向量 vector v(10):初始化一个10个大小的向量 push_back:增加一个元素 pop:删除一个元素,不返回 front:返回第一个元素 back:返回最后一个元素 at:返回特定位置的元素 capacity:vector的容量,会自动扩大  也可以直接通过v[x]操作元素 /*: Test.cpp */ #include <iostream> #include <vector> #include <string> #i…
一.列出主机上已经创建的容器 docker ps -a 二.创建交互式容器 命令: docker run -i -t ubuntu /bin/bash 其中-i -t 表示创建一个提供交互式shell的容器. ubuntu是镜像名,如果本地不存在,回到仓库中下载. /bin/bash 是指定容器创建后立即执行的命令. 注意:每个容器都有一个唯一的ID,作为容器的标识.每个容器也有个唯一的名称,在用docker run命令创建时可以通过 --name 名称 来指定,如果不指定,系统会自动产生一个名…
docker logs  [-f]  [-t]  [--tail]  容器名 -f -t --tail="all" 无参数:返回所有日志 -f 一直跟踪变化并返回 -t 带时间戳返回 -tail 返回结尾处指定数量日志 ctrl+c停止返回 docker -tf --tail 10 dc1 # 最近10条 docker -tf --tail 0 dc1  # 最新的日志 docker ps doker top dc1 # 容器情况 # 在运行中的容器内启动新进程 docker exec…