C++学习
探索鸭
非宁静无以致远
展开
-
随笔 dijkstra算法
#include<iostream>#include<vector>using namespace std;vector<int> dijkstra(vector<vector<int>> edge){ int n = edge.size(); vector<int> dist(n, 0);//0到每个顶点的距离 vector<int> flag(n, 0);//状态标记:改点是否已经被探索过 flag[0原创 2020-10-15 10:26:54 · 110 阅读 · 0 评论 -
C++常见面试题整理
1 最大最小堆设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可class Solution {public: vector<int> smallestK(vector<int>& arr, int k) { priority_queue<int, vector<int>, less<int>> maxHeap; vector<int> out;原创 2020-08-24 19:59:21 · 337 阅读 · 0 评论 -
C++ vector和map的嵌套使用
注意:插入之前先find一下,如果迭代器指向end(),则之前没有相应的key,先加入key,否则直接在相应的key下操作【map】。另外:Multimap允许重复元素,map不允许重复。因此Multimap不能按key访问,find函数将返回第一个找的key所在迭代器。 它们可以根据 key 的排序准则自动将元素排序,集合中的元素按一定的顺序排列。元素插入过程是按排序 规则插入,所以不能指定插入位置。std::map<std::string, std::vector<std::.转载 2020-08-21 09:38:55 · 6647 阅读 · 0 评论 -
华为提前批面经
笔试:AC>=1就可以一面:主要问和项目相关的知识,手撕代码easy难度,数组去重和排序。二面:还是先问一些项目的知识,然后问我对抗学习,强化学习,深度学习,我当时懵了,因为我一开始投的算法后来改投C++开发的,主要就是问它们的实现原理和相互之间的区别,问我机器学习这一块厉不厉害这些,我只能说我学过,emmmmm。不过还好都懂些,都能回答出来一些。然后问我Tensorflow一些细节,并不能全答出来。之后再问我C++,问lambda和STL,这些也算基础知识,都能回答出来,讲道理面原创 2020-08-20 09:52:32 · 2275 阅读 · 0 评论 -
C++中public、protected、private的区别
第一: private,public,protected的访问范围:private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数第二:类的继承后方法属性变化:使用private继承,父类的所有方法在子类中变为priva转载 2020-08-15 19:14:53 · 3756 阅读 · 0 评论 -
char,int,string之间的相互转换
string转int:stoi()函数int转stringto_string()函数char转int-‘0’int转char+‘0’#include<iostream>#include<string>using namesapce std;int main() { /* ->string to int<- */ string s = "1234"; int n = stoi(s); cout << n <<.原创 2020-08-03 17:08:12 · 151 阅读 · 0 评论 -
关于内存泄露的理解【new&&delete】
解答:class Solution {public: TreeNode* sortedArrayToBST(vector<int>& nums) { return helper(nums, 0, nums.size() - 1); } TreeNode* helper(vector<int>& nums, int left, int right) { if (left > right) {...原创 2020-07-03 20:11:31 · 259 阅读 · 0 评论 -
C++ vector用法解析 也可类推STL,string.
C++ vector用法解析 也可类推STL,string。好像大部分函数都是通用的,还没发现不合适的,如有错误,望指出。一维初始化:vector<type> vec = {}; vector<type> vec2(vec);二维初始化:vector<vector<type>> vvec = {{}};vector<vector<type>> vvec2(vvec);一、容器特性1.顺序序列顺序容器中的元素按..原创 2020-07-02 14:47:31 · 170 阅读 · 0 评论 -
c++ 关于如何获得char,int,float型的最大最小值
int型的最大值是0x7fffffff,可以算一下 0x7FFFFFFF 是多少每个十六进制数4bit,因此8位16进制是4个字节,刚好是一个int整型(好像一个字节是8 bit)F的二进制码为 11117的二进制码为 0111这样一来,整个整数 0x7FFFFFFF 的二进制表示就是除了首位是 0,其余都是1就是说,这是最大的整型数 int(因为第一位是符号位,0 表示他是正数)用 INT_MAX 常量可以替代这个值。所以目测0x好像是表示这是一个十六进制数。相应的最小值可以表转载 2020-07-02 09:10:01 · 1492 阅读 · 0 评论 -
C++随机数笔记
一、产生制定区间的随机数要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。要取得0~1之间的浮点数,可以使用rand()转载 2020-06-24 20:31:30 · 206 阅读 · 0 评论 -
C++ lambda函数
C++primer例子:#include <iostream>#include<vector>#include<string>#include<algorithm>#include<cmath>#include<ctime>const long Size = 390000L;using namespace std;int main(){ vector<int>numbers(Size); sra转载 2020-06-21 11:55:36 · 139 阅读 · 0 评论 -
C++判断输入是否为字符,数字,空格等
#include<ctype.h>中包含了一系列字符函数函数名称 返回值【输入是字符char】 isalnum() 如果是字母或数字,返回true isalpha() 如果是字母,返回true isdigit() 如果是数字,返回true islower() 如果是小写字母,返回true ispunct() 如果是标点符号,返回true isspace() 如果是空白字符,包括空格、进纸、换行符、回车、制表符等原创 2020-06-20 16:34:50 · 10679 阅读 · 0 评论 -
C++数组赋值
情况1:无{}int#include<iostream>using namespace std;int main(){ int a[5]; a[1] = 2; for (int i : a) { cout << i <<" "; } system("pause"); return 0;}//输出:-858993460 2 -858993460 -858993460 -858993460char 【-52可以理解为乱码】#i原创 2020-06-20 15:27:58 · 11912 阅读 · 0 评论 -
16.6 STL算法
16.6.4函数和容器方法STL方法更适用于特定的容器(非通用方法)。作为成员函数,它可以使用模板类的内存管理工具,从而在需要时调整容器的长度。例如:list<int la>la.remove(4);//删除链表所有为4的元素,同时改变链表长度last = remove(la.begin(),la.end(),4);//它将没被删除的元素放在链表的开始位置,并返回一个指向新超尾的迭代器。la.erase(last,lb.end);//删除末尾元素#include&.原创 2020-05-23 11:28:38 · 309 阅读 · 0 评论 -
C++ next_permutation统计字符串的所有组合方式
next_permutation()算法将区间内容转化为下一种唯一的排序方式。对于字符串,字符串按照递增顺序进行。如果成功,该算法返回true;如果区间已经处于最后的序列中,则返回false。要得到区间的所有组合顺序,所以字符串要从最初(排完序)的顺序开始,为此本程序从sort后的字符序列开始。#include<iostream>#include<string>#include<algorithm>int main(){ using na...原创 2020-05-22 13:57:59 · 732 阅读 · 1 评论 -
STL的一些扩充内容(简)
不同容器间操作,与显示屏间操作,反转操作等。copy(): 接收三个参数,前两个迭代器参数表示要复制的范围,最后一个迭代器参数表示要将第一个元素复制到什么位置。//copy() and iterators#include<iostream>#include<iterator>#include<vector>using namespace std...原创 2020-04-27 16:23:04 · 179 阅读 · 0 评论 -
C++标准模板库
模板类vector入门例子:#include<iostream>#include<vector>#include<string>using namespace std;const int NUM = 5;int main() { /*1*/ //int n; //cin >> n; //vector<double&g...原创 2020-04-26 17:09:18 · 155 阅读 · 0 评论 -
C++文件输入和输出
简单的文件I/O写入文件1.创建一个ofstream对象来管理输出流;2.将该对象与特定的文件关联起来;3.以使用cout的方式使用该对象,唯一的区别是输出将进入文件,而不是屏幕;ofstream fout;//create an ofstream object named foutfout.open("jar.txt");//associate fout with jar.t...原创 2020-04-23 11:07:20 · 1125 阅读 · 0 评论 -
C++学习之使用cin进行输入
基础cin对象将标准输入表示为字节流,能够识别大部分的基本类型。可以将hex,oct,和dec控制符与cin一起使用,来指定将整数输入解释为十六进制、八进制还是十进制。例如cin>>hex;对于char* 类型的参数,抽取运算符读取输入中的下一个单词,将它放置在指定的地址,并加上一个空值字符,使之成为一个字符串。例如:cout<<"Enter your name...原创 2020-04-22 15:46:25 · 2870 阅读 · 0 评论 -
C++ 输出
流和缓冲区stream:C++程序把输入和输出看做字节流,流充当了程序和流源或流向目标之间的桥梁。键盘输入每次提供一个字符,因此在这种情况下,程序无需缓冲区来帮助匹配不同的数据传输速率。然而,对键盘输入进行缓冲可以让用户在将输入传输给程序之前返回并更正。C++程序通常在用户按下回车键时刷新输入缓冲区。对于屏幕输出,C++程序通常在用户发送换行符时刷新输出缓冲区。cin:对应标准输入流...原创 2020-04-20 14:32:28 · 13493 阅读 · 0 评论