华为面试复习

news/2025/3/15 4:02:49/

hr给了大致的范围,然后我做了点答案的总结

C++机试及面试手撕题参考复习范围

基本类型、函数和容器的使用

int 
long
char
string
vector
map
queue
set

进制转换

二进制 std::bitset    or  bitset<n>() n是输出的位数
八进制  std::oct    
十进制  std::dec   
十六进制  std::hex  

数字转字符

sprintf()(不能指定的版本,存在安全隐患) 
snprintf()(可以指定写入的字符的最大数目n,安全)
to_string()

字符转数字

stoi() (字符转整形)
stof() (字符转浮点数)  
strtol()(任意2-36进制数转化为10进制数)
itoa()(可以将一个10进制数转换为任意的2-36进制字符串)

unordered_map

first,   指向键  (*it).first;     it->first; 
second,  指向值  (*it).second;    it->second;
// 迭代器操作,可以简单理解成下标
for (auto t =m.begin(); t != m.end(); ++t){}  
for (i: m){}count(), 查找无序map中元素为指定键值的元素的数量,因为无序map不允许重复的键值,因此如果能找到该元素,则返回1,否则返回0。
m.find(元素)!=m.end(),  根据键值,查找某个元素,返回迭代器,如果没找到元素
erase(),                通过指定键值或者迭代器,可以删除元素。m.erase(m.begin()); 通过指定迭代器 m.erase(1);         通过指定键值,erase(beg, end);    删除区间[beg,end)的所有元素
insert(make_pair(key, value)) 插入元素,如果是重复键值,注意,该插入将会被忽略。
clear() 清空容器内容。
empty() 判断是否为空容器。
size()  返回容器大小。
swap()      a.swap(b); //b为map,将a中的元素和b中的元素进行整体性交换,,有点像互换了名字

vector

如何创建m行n列初始化为0的数组
vector<vector<int>> v(m, vector<int>(n))
vector<int> v ; iota(v.begin(), v.end(), 初始值); //初始化初始值往上增1,
vector<int> L4(5);   初始化50    
vector<int> L5(5,2); 初始化52,   
vector<int> L = {1,5,3,10,4,-1};确定元素初始化如何全排列(next_permutation),sort(n1.begin(),n1.end()); //next_permutation要升序排列,否则会漏算 do t4.push_back(n1[0]+n1[1]+n1[2]+n1[3]);while(next_permutation(n1.begin(),n1.end()));sort(n2.begin(),n2.end());reverse(n2.begin(),n2.end()); //prev_permutation要降序排列do t3.push_back(n2[0]+n2[1]+n2[2]+n2[3]);while(prev_permutation(n2.begin(),n2.end())); 
push_back() 在最后添加
pop_back()  在最后删除
front()     返回第一个元素
back()      返回最后一个元素
insert() a.insert(a.begin()+1,5);        //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4a.insert(a.begin()+1,3,5);      //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5a.insert(a.begin()+1,b+3,b+6);  //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8,插入元素后为1,4,5,9,2,3,4,5,9,8
a.find(元素)!=a.end(),  根据值,查找某个元素,返回迭代器,如果没找到元素
count()     返回某个元素数量   find count之类的函数对于迭代器都是通用的
size()      返回a中元素的个数
empty()     判断是否为空
clear()     清空中的元素
erase()     删除也是三类 通过指定迭代器 指定区间,指定值
swap()      a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
a.rezize(10);   //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.rezize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2

string

+     字符串的拼接,相当于重载了+操作符   s1.append(s2);这个也是连接
-     似乎没有字符串减法吧
=<>   字符串对比主要是用于比较两个字符串是否相等,判断谁大谁小的意义并不是很大
compare()   s1.compare(s2)  相等时返回0;s1>s2时返回1,s1<s2时返回-1
s.size()  大小,长度  s.length();
empty()   是不是为空,我常用size()==0 判断
insert()  插入  s.insert(p,t);//在迭代器p指向的元素之前插入一个值为t的新元素string str="hello";string s="Hahah";str.insert(1,s);//在原串下标为1的字符e前插入字符串ss.insert(p,n,t);//在迭代器p指向的元素之前插入n个值为t的新元素string str1="hello";char c='w';str1.insert(4,5,c);//在原串下标为4的字符o前插入5个字符cstring str2="hello";string s2="weakhaha";str2.insert(0,s2,1,3);//将字符串s2从下标为1的e开始数3个字符,分别是eak,插入原串的下标为0的字符h前
c_str()   字符串转字符数组strcpy(str,s.c_str());  
s=str     str为char数组,s为string类型
replace()  替换字符  string &replace(iterator first0, iterator last0,const char *s);//把[first0,last0)之间的部分替换为字符串sstring &replace(int p0, int n0,const char *s);//删除从p0开始的n0个字符,然后在p0处插入串sstring &replace(int p0, int n0,int n, char c);//删除p0开始的n0个字符,然后在p0处插入n个字符c
find()     s.find(t); t可以是字符,也可以是子串  s.rfind();从后往前找,
sort()     排序string s[100];   对string类型数组排序sort(s,s+n,cmp);int cmp(string a,string b){return a<b; //或a>b;}
下标        s[i] 下标访问,就跟数组一样,可以简单理解为字符串就是个字符数组
clear()     删除全部字符
swap()      交换两个字符串的内容
substr()    返回某个子字符串s.substr();//返回s的全部内容s.substr(11);//从索引11往后的子串s.substr(5,6);//从索引5开始6个字符

deque 感觉和vector基本一致

front(); //返回容器中第一个数据元素
back(); //返回容器中最后一个数据元素
push_front()  在 queue 的头部添加
push_back()   在 queue 的尾部添加一个元素的副本
pop_back()    删除 queue 中的最后一个元素 尾元素
pop_front()   删除 queue 中的第一个元素 头元素
size()   返回 queue 中元素的个数。
empty()  如果 queue 中没有元素的话,返回 true
swap()      a.swap(b); //b为队列,将a中的元素和b中的元素进行整体性交换
deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
insert()insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
clear(); //清空容器的所有数据
erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos); //删除pos位置的数据,返回下一个数据的位置下标,迭代器 基本所有的都有这三种取值方式

priority_queue优先队列(默认大堆顶,也可以自定义为小堆顶)

优点: 自动排序
优先队列没有back()操作!
声明都差不多
priority_queue <int> i;
priority_queue <double> d;q.size();//返回q里元素个数
q.empty();//返回q是否为空,空则返回1,否则返回0
q.push(k);//在q的末尾插入k
q.pop();//删掉q的第一个元素 
q.top();//返回q的第一个元素  头元素,就是按排序后的顺序

queue

push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素  尾
front(); //返回第一个元素   头
empty(); //判断堆栈是否为空
size(); //返回栈的大小

stack

push(elem); //向栈顶添加元素
pop(); //从栈顶移除第一个元素
top(); //返回栈顶元素
empty(); //判断堆栈是否为空
size(); //返回栈的大小

set,map:默认有序,对自定义结构需要自定义比较方法用于排序(延伸:如何自定义?)
利用仿函数重载().其实如果对map的值排序我用的更多是sort函数,然后自己写一个排序的方法当参数

以上很多容器都具有迭代器,迭代器的使用是共通的,有的方法我可能只在一个容器下列了,但实际上很多容器都可以用,切记要主动实践,灵活使用。


http://www.ppmy.cn/news/596085.html

相关文章

【从零开始学习JAVA | 第二十篇】常见API介绍 Math

目录 前言&#xff1a; MATH: Math类中的常用方法&#xff1a; 总结&#xff1a; 前言&#xff1a; 本篇往后我们会详细介绍一些常用的API&#xff0c;今天我们介绍的是Math的常用方法。但是其实我们不需要记住所有的方法&#xff0c;在日常工作中自己学会查询API文档就可以…

多线程 /C++ 11 std::thread 类深入理解和应用实践

文章目录 概述准确理解 joinable 属性a thread of execution 执行线程线程 active线程 joinable "可加入" 函数 join 和 函数 detach如何理解线程对象是被安全地销毁的native_handle 线程句柄std::thread类的其他接口常见错误错误 C2893错误 C2653 概述 C11 的引入标…

ChatGPT最新版带来的多功能批量写作工具激发您的创作

随着人工智能的不断发展&#xff0c;ChatGPT最新版作为一款多功能批量写作工具&#xff0c;为创作者们带来了前所未有的创作体验。它能够通过自然语言处理和机器学习技术&#xff0c;生成高质量的文章、故事、对话等内容&#xff0c;为创作者们提供了无限的创作灵感和可能性。本…

python中MongoEngine简单使用

python中MongoEngine简单使用 1 MongoEngine介绍 MongoEngine是一个处理MongoDB的对象文档映射器。pymongo是非面向对象的方式操作数据。 MongoEngine开发文档 # 开发文档 http://docs.mongoengine.org/index.html# 数据类型 http://docs.mongoengine.org/apireference.htm…

如何修改植物大战僵尸文档

文章目录 一、安装相关软件二、打开文档所在三、修改文档1.修改文档的核心2.修改关卡3.修改金币4.解锁迷你游戏等5.解锁成就 一、安装相关软件 1.安装植物大战僵尸 2.安装Hex Editor Neo 二、打开文档所在 1.打开C盘&#xff0c;点击左上角的查看&#xff0c;点击隐藏的项目…

植物大战僵尸beta贝塔版

相信大家对于植物大战僵尸这款游戏不会感到陌生&#xff0c;直到现在还备受欢迎&#xff0c;但由于原作不会更新&#xff0c;众多玩家在玩了N遍经典版后有点乏味了&#xff0c;便有不少大佬开始在原作的游戏基础上进行强化修改&#xff0c;从而衍生出了植物大战僵尸beta版(下载…

植物大战僵尸音乐计算机简谱,植物大战僵尸主题曲简谱|植物大战僵尸主题曲:Zombies on Your Lawn...

【www.jianqiaoenglish.com--英语文化】 沪江英乐讯 热门游戏植物大战僵尸的设计师Geroge Fan的女友Laura Shigihara是一个职业游戏音乐制作人&#xff0c;她负责制作并演唱了植物大战僵尸这款游戏的主题音乐Zombies on Your Lawn Artist&#xff1a;Laura Shigihara Song&am…

【苏大C++第二次考试】

考试说明 考试时间&#xff1a;合计130分钟。选择题部分40分钟交卷&#xff0c;允许提前交卷。考试过程中&#xff0c;不能连接未经指定网站或服务器。闭卷考试部分&#xff0c;不能查阅任何类型的参考资料。开卷考试部分&#xff0c;可以查阅纸质文档&#xff0c;不能查阅任何…