首页 > 其他分享 >2023/7/3学习日记

2023/7/3学习日记

时间:2023-07-04 09:44:04浏览次数:32  
标签:map insert int 元素 find 学习 mp 2023 日记

1.温故了原码,反码,补码的概念

2.lowbit 函数,用来返回二进制数最低位的1:

int lowbit(int x) {
return x & ( -x);
}

3.返回二进制数含有多少1的函数:

int cnt(int x) {
res = 0;
while (x > 0) {
res++;
x -= lowbit(x);
}
return res;
}

4.算法学习——状态压缩dp,进阶搜索,双向广度搜索

5.stl map

map与普通的数组赋值有几个区别:

  1. 键值对的存储方式不同map以键值对的形式存储数据,每个元素都有一个唯一的键与之对应。而普通数组只能使用整数索引来访问元素,没有键值对的概念。

  2. 动态大小map的大小是动态调整的,可以根据需要插入或删除键值对。而普通数组的大小是静态的,在创建时需要指定固定的长度。

  3. 自动排序map中的元素是按照键的大小进行自动排序的。这使得在使用map时可以方便地根据键的顺序进行遍历和查找。而普通数组的元素按照索引的顺序排列,没有自动排序的特性。

  4. 键的唯一性map中的键必须是唯一的,如果插入相同的键,则后面的值会覆盖前面的值。这使得map适用于存储具有唯一标识符的数据。而普通数组允许重复的元素。

  5. 高效的查找和插入操作map内部使用红黑树等数据结构实现,使得查找和插入操作具有较高的效率。而普通数组的查找操作通常需要遍历整个数组。

map中元素的插入
在map中元素有两种插入方法:

使用下标
使用insert函数
在map中使用下标访问不存在的元素将导致在map容器中添加一个新的元素。

insert函数的插入方法主要有如下:

m.insert(e)
m.insert(beg, end)
m.insert(iter, e)
上述的e一个value_type类型的值。beg和end标记的是迭代器的开始和结束。

map<int, int> mp;
mp.insert(pair<int,int>(1, 2));

map<int, int> mp;
mp.insert(make_pair<int,int>(2,3));

map<int, int> mp;
mp[4] = 5;

前三种方法当出现重复键时,编译器会报错,有的可能不会报错但是会忽视重复键插入,而第四种方法,当键重复时,会覆盖掉之前的键值对。

map中元素的查找和读取

注意:上述采用下标的方法读取map中元素时,若map中不存在该元素,则会在map中插入。

因此,若只是查找该元素是否存在,可以使用函数count(k),该函数返回的是k出现的次数;若是想取得key对应的值,可以使用函数find(k),该函数返回的是指向该元素的迭代器。

#include <stdio.h>
#include <map>
using namespace std;

int main(){
map<int, int> mp;
for (int i = 0; i < 20; i++){
mp.insert(make_pair(i, i));
}

if (mp.count(0)){
printf("yes!\n");
}else{
printf("no!\n");
}

map<int, int>::iterator it_find;
it_find = mp.find(0);
if (it_find != mp.end()){
it_find->second = 20;
}else{
printf("no!\n");
}

map<int, int>::iterator it;
for (it = mp.begin(); it != mp.end(); it++){
printf("%d->%d\n", it->first, it->second);
}
return 0;
}

从map中删除元素

从map中删除元素的函数是erase(),该函数有如下的三种形式:

  • m.erase(k)
  • m.erase(p)
  • m.erase(b, e)

标签:map,insert,int,元素,find,学习,mp,2023,日记
From: https://www.cnblogs.com/luguodong/p/17524189.html

相关文章

  • 公共语言运行库(CLR)开发系列课程(3):COM Interop基础 学习笔记
    公共语言运行库(CLR)开发系列课程(3):COMInterop基础学习笔记  上章地址什么是COMComponentObjectModel组建对象模型 基于接口(Interface)接口=协议IID标识接口V-table虚表方式调用单继承 对象(Object)实现一个或者多个接口举例:IDispatch......
  • 2023/7/4常见WEB漏洞原理分析
    一、SQL注入漏洞SQL注入攻击(SQLInjection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、......
  • IDEA: File and code Templates IntelliJ IDEA 2023.1
     https://www.jetbrains.com/help/idea/file-template-variables.html  /**encoding:utf-8*版权所有${YEAR}涂聚文有限公司*许可信息查看:*描述:#Author:geovindu,GeovinDu涂聚文.#IDE:IntelliJIDEA2023.1Java17#Datetime:${YEAR......
  • C语言学习笔记
    C语言学习笔记1.初识C语言常见类型长度单位:字节=比特全局变量和局部变量全局变量:定义在花括号外的变量局部变量:定义在花括号内的变量局部变量和全局变量的名字重合时,局部变量优先C语言规定变量要定义在当前代码块的最前面*计算两数之和:#include<stdio.h>intmain()......
  • SSO2.0 19-20230703
         ......
  • Vue3学习-01_前端工程化与webpack
    背景最近在学习Vue知识,参照的教程是黑马程序员官网提供的免费前端教程,这里记录一下自己的学习笔记以及遇到的相关问题。前端工程化的概念及优点前端工程化指的是:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。最终落实到细节上,就是实......
  • 每日总结2023年7月3日
    今日记录:早上6点半起床,8点到达石家庄站,9点30到16点在高铁上,17点到的家,走访了亲戚遇到的问题:因为没有学习所以没有问题。明天的计划:因为7月2日(昨天)把虚拟机给配置好了,现在蓝屏问题已经解决了(昨天忘记发博客了今天在【明日计划】下面做一下补充),所以明天把Centos调一下,准备搞一下集......
  • 2048学习
    1.块元素、行内元素、行内块元素块元素的特征:自身独占一行高宽、宽度、内外边距可自定义宽度默认为父元素的100%默认纵向排列高度默认被内容撑开常见块元素:<p><div><ul><li><h1>-<h6><form>行内元素特征:相邻元素在一行高度宽度设置无效默认的宽高是文本内容的宽高......
  • 2023.7.3打卡
    2023.7.3(1)、今天早上七点起床跑步,很久没锻炼了,跑了两公里有点跑不动了,上午来了县城,热死了,早知道就早点出发了,坐车的一小时我复习了200个高中英语词汇,到了之后发现没带毛巾,又出去买了根毛巾,顺便吃了个午饭,睡了会午觉,下午陪弟弟妹妹们打了会游戏,吃完晚饭五点半,出去打球打到十点才回......
  • SequoiaDB分布式数据库2023.6月刊
    本月看点速览全球溯源中心系列成果发布,巨杉数据库受邀出席聚焦产业升级,斩获新一代信息技术创新企业推进产业生态,赋能行业发展青杉计划2023已开启,一起攀登更高的“杉” 全球溯源中心系列成果发布,巨杉数据库受邀出席6月19日,“链接世界预鉴未来”——全球溯源中心系列......