debug的故事

class里的函数的声明和初始化,括号里的参数的表示名字得一致,否则就会识别成两个函数(在类外定义的时候)

void init(int yy,int mm,int dd);
void Date::init(int yy,int mm,int dd)

函数语句解读

1.指向class里的函数的指针

void(Date::*p3)(int,int,int);
p3=Date::init;   //别加括号,以及参数
(date1.*p3)(2006,4,8);//取出对应的函数的名称,指针取出的名称

特殊的语句格式。

2.字符串的定义用中括号 char name[3] ;

3.cout'<<\t'=TAB,就是空格

4.指针的浅拷贝

p1=new Person;
p2=new Person;
*p2=*p1;

这个居然是浅拷贝,有售后的复制粘贴,震惊我

浅拷贝居然是有售后的拷贝

5.this指针

这仨结果一样,x是private。

cout<<x;
cout<<this->x;
cout(*this).x;

6.vector.size()

vector自带的size工具是 vector.size()。别忘了括号

7.[Warning] unknown escape sequence: '\F'

正则表达式是字符串引擎,C++中"\“在字符串中表示要用”\\"

8.c++读取文件代码

#include <vector>
#include <string>
#include <fstream> //读取文件专门添加的
#include <iostream>
using namespace std;
int main()
{int i;ifstream ifs;ifs.open("E:\\File of chedui\\2021\\22\\fig01_02.cpp",ios::in);//打开文件if (!ifs.is_open()) {cout << "文件打开失败" << endl;}vector<string> vStr;string buff;                          //把文件内容读取到string里while (getline(ifs, buff))            //在加到vector里{vStr.push_back(buff);} ;for(int i=0;i<vStr.size();++i)        //作用是输出vector,别忘了(){cout << vStr[i]<< endl;};ifs.close();system("pause");
}

9.vector和stack

vector添加元素是push_back(i)

stack添加元素是push(i)

括号里是要添加的元素

10.看了c和c++的栈的区别,我只想大吼一声c++yyds

11.unexpected token '{' following declaration of 'main'

int main ()

后面忘记加()了

12.别忘了using namespace std;

13.pop是删除栈顶的东西,用法是"栈名.pop()"

括号里本来就是空的

14.devc++确实不支持stack,我也不知道咋调

15.c== '/'||c=='*'||c=='('||c=='['||c=='{'每个都要有“c==”

16.redefinition of default parameter


int add(int m, int n =10);
int main()
{};
int add(int m, int n)//如果这个地方加上int n=10就会报错
{
return (m + n);
}

17.undeclared identifier nullptr

化nullptr为NULL就ok

18.vector.end();

这个像是老虎的尾巴,摸不得,返回值是-1,赋值最往后赋值到倒数第二个。

在指针指到end-1之后,下一个就再回到开头,别指到end,否则返回值是-1

(1条消息) vector.end()指向的是最后一个元素的下一个位置,所以访问最后一个元素的正确操作为:vector.end() - 1;_hzw.000的博客-CSDN博客

19.list的尾巴

list的尾巴即list.end()也是这样

不能输出,不能调用,只在指针指到倒数第二个的时候移到第一个去。

20.*(list/vector).(begin/end)()

得加星号,否则是输出的地址

21.返回值为struct的函数的赋值

tmp = numbers inputinformation();
//返回值为叫做numbers的结构体
//这样会报错
//[Error] expected primary-expression before 'inputinformation'
tmp = inputinformation();
//这样没问题,因为去掉了numbers

22.stack的初始化以及string的输入输出

    stack<char> num;//用stl里的stackstack<int> ope;string s;cout<<"请输入表达式:"<<endl;//string可以直接输入输出,用cin和coutcin>>s;cout<<s;

string一般配的是char*的指针

char *p;
p = &cal1.s[0];

class外定义函数,:函数类型 class名字::函数名称

class定义的时候,后面没有小括号

class date ()这里没有小括号

int n=cal1.s.length();//判断遍历次数,即表达式的长度

string的长度只能通过length获取

char类型的数字转化成int型的数字

char c='1'
int a=c-'0';//单引号哦

有时间搞明白,多个cpp文件一起工作的原理

判断stack是不是空,别用size==0.用empty()更好

c++幂函数

//使用到库文件#include<cmath>
int a;
a=(int)pow(2.2,3);
cout<<a;

compare(int a,int b)

比较 a,b数值的大小  a>b  返回值为 1

a=b 返回值为 0

a<b 返回值为 -1

     ptr pa,pb,pc,pd;pa=a.begin();pb=b.begin();pc=c.begin();//pd=d.begin();numbers testa,testb,testc,testd;testa=*pa;testb=*pb;testc=*pc;

这样的话,如果pa移动,testa是不会变的哦,得移动之后再赋值一次。

vector和list的区别,分清楚

C++ vector和list的区别 - 迪米特 - 博客园 (cnblogs.com)

队列(queue)和栈(stack)是list的特殊情况。

[数据结构]——链表(list)、队列(queue)和栈(stack) - eudiwffe - 博客园 (cnblogs.com)

list 的list的end里没有东西,最后的数值在end()-1里,

插一嘴,我想用matlab算二元二次方程组的解

syms t m;eq1 = 3.25*3.25+m^2-t^2-2*m*3.25*cos(88.37)==0;
eq2 =(m^2+t^2-3.25*3.25)*(2*(9.38-t)*(9.09-m))-2*m*t*((9.38-t)^2+(9.09-m)^2-6.75*6.75)==0;[t, m] = solve(eq1, eq2, t, m);
%disp(t);
disp(m);

这样不对,答案不对

struct的构造函数

这是很有用的,不过我还没有太学会。

不太明白

template <class T>

template <class T> // 最常用的:一个class 参数。template <class T, class U> // 两个class 参数。template <class T, int N> // 一个class 和一个整数。template <class T = char> // 有一个默认值。template <int Tfunc (int)> // 参数为一个函数。

这是建立模板的固定形式,template即模板,class指类别,T是类别的统称,可以使用的数据类型有int、char,float,double等等。

template < typename T >
T min( T a, T b )
{
return a > b ? b : a;
}

在模板定义语法中关键字class与typename的作用全然一样。这里class关键字表明T是一个类型。

类模板(也称为类属类或类生成类)同意用户为类定义一种模式。使得类中的某些数据成员、默写成员函数的參数、某些成员函数的返回值,能够取随意类型(包含系统提前定义的和用户自己定义的)。

当中通用类型T能够作为普通成员变量的类型,还能够作为const和static成员变量以及成员函数的參数和返回类型之用。

在类定义体外定义成员函数时,若此成员函数中有模板參数存在,则除了须要和一般类的体外定义成员函数一样的定义外,还需在函数体外进行模板声明

C++中 模板Template的使用 - cynchanpin - 博客园 (cnblogs.com)

这个写的很清楚

假设函数是以通用类型为返回类型,则要在函数名前的类名后缀上“<T>”。

const T&

对常量(const)的引用,又称为常量引用,常量引用不能修改其邦定的对象。

bool Insert(const T& key)

(2条消息) const T、const T*、T *const、const T&、const T*& 的区别_luoweifu的博客-CSDN博客_const*

这个讲的很明白

void和bool的区别

C++是强类型的语言,“void”是返回类型,但是它是无返回值的返回类型;“bool”是有返回值的返回类型,但是它的返回值只有两个,分别是“true”和“false”。

while(pointer)

意思是,如果指针非空,就一直执行

产生随机数

srand(time(NULL));//注意头函数以及time的括号里得有东西
1.Insert(rand()%100 + 1);
//注意循环只能循环最后一句,别把第一句也循环 了,否则生成一串同一个数字
//这样才可以哦
srand(time(NULL));for (int i = 0; i < p; i++){T1.Insert(rand()%100 + 1);}

struct的构造函数,不要定义空的参数,所以加上一个构造函数

struct BSTNode
{T val;BSTNode<T>* Nodeleft;BSTNode<T>* Noderight;BSTNode(const T m) { val = m; Nodeleft = NULL; Noderight = NULL; };BSTNode() { val = 0; Nodeleft = NULL; Noderight = NULL; };
};

(2条消息) c++ 定义对象数组报错no matching function for call to_cjh_hit的博客-CSDN博客

要不会报错的,就想上面那个

#include<stdio.h>
#include<string.h>
#define MAX_HASH_TABLE_LEN 10
#define true 1
#define false 0
typedef int  bool;typedef struct _NODE
{int data;struct _NODE* next;
}NODE;typedef struct _HASH_TABLE
{NODE* value[MAX_HASH_TABLE_LEN];
}HASH_TABLE;/*哈希表索引 _创建hash表()*/
HASH_TABLE* create_hash_table()
{return (HASH_TABLE*)calloc(1, sizeof(HASH_TABLE));
}/*数据所在的节点 _hash表当中寻找数据(哈希表索引,目标数据)*/
NODE* find_data_in_hash(HASH_TABLE* hashtable_index, int data)
{if (NULL == hashtable_index)return NULL;NODE* node_index = NULL;if (NULL == (node_index = hashtable_index->value[data % MAX_HASH_TABLE_LEN]))return NULL;while (node_index) {if (data == node_index->data)return node_index;node_index = node_index->next;}return NULL;
}/*成败 _在hash表当中插入数据(哈希表索引,目标数据)*/
bool insert_data_into_hash(HASH_TABLE* hashtable_index, int data)
{   if (NULL == hashtable_index)return false;NODE* node_index = NULL;if (NULL == hashtable_index->value[data % MAX_HASH_TABLE_LEN]) /*主键table位为空*/{node_index = (NODE*)calloc(1, sizeof(NODE));        node_index->data = data;hashtable_index->value[data % MAX_HASH_TABLE_LEN] = node_index;return true;}if (find_data_in_hash(hashtable_index, data))/*有相同的data则不插入*/return false;node_index = hashtable_index->value[data % MAX_HASH_TABLE_LEN];while (node_index->next)node_index = node_index->next;node_index->next = (NODE*)calloc(1, sizeof(NODE));node_index->next->data = data;return true;
}/*成败 _从hash表中删除数据(哈希表索引,目标数据)*/
bool delete_data_from_hash(HASH_TABLE* hashtable_index, int data)
{NODE* node_index = NULL;if (NULL == hashtable_index || NULL == hashtable_index->value[data % MAX_HASH_TABLE_LEN])return false;if (NULL == (node_index = find_data_in_hash(hashtable_index, data)))return false;if (node_index == hashtable_index->value[data % MAX_HASH_TABLE_LEN]) {hashtable_index->value[data % MAX_HASH_TABLE_LEN] = node_index->next;goto final;}NODE* first_node_index = hashtable_index->value[data % MAX_HASH_TABLE_LEN];while (node_index != first_node_index->next)first_node_index = first_node_index->next;first_node_index->next = node_index->next;final:free(node_index);return true;
}/*遍历打印哈希表(哈希表索引)*/
void print_hash(HASH_TABLE* hashtable_index)
{int i = 0;if (NULL == hashtable_index) return;for (i = 0; i < MAX_HASH_TABLE_LEN; ++i){NODE* tmp = hashtable_index->value[i];while (tmp){printf("%d-", tmp->data);tmp = tmp->next;}printf("\n");}
}int main()
{int i = 0;HASH_TABLE* h = create_hash_table();for (i = 0; i < 100; ++i){insert_data_into_hash(h, i);}printf("打印哈希表:\n");print_hash(h);printf("查找哈希表中data=10元素 : \n"); printf("%d\n", (find_data_in_hash(h, 10))->data);printf("删除data=99元素:\n");delete_data_from_hash(h, 99);printf("打印哈希表:\n");print_hash(h);system("pause");return 0;
}

取余取模

取模运算(“Modulus Operation”)和取余运算(“Remainder Operation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。

[Error] expected unqualified-id at end of input

这个是指的{}等符号不成对

【C++】array和vector,数组三者区别和联系

结论:能用vector就用vector;

was corrupted

关于报错:Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted的解决方式_Adam Xi的博客-CSDN博客

运算符重载& operator=

返回值是class的类型的名字,&是返回值引用

就是,加上可以连等也可以实现数组,而且返回const引用效率最高

连通分量:不连通的图是由2个或者2个以上的连通子图组成的。这些不相交的连通子图称为图的连通分量。

学习C++的笔记(算法与数据结构要求(2)(我不是黑瞎子掰棒子相关推荐

  1. 考研数据结构学习与总结笔记---1.1数据结构的基本概念

    考研数据结构学习笔记---王道 数据结构的基本概念 1.数据 2.数据元素 3.数据对象 4.数据类型 5.数据结构 数据结构三要素 1.数据的逻辑结构 2.数据的存储结构 3.数据的运算 回顾与总结 ...

  2. (java)玩转算法系列-数据结构精讲[学习笔记](一)不要小瞧数组

    前言: 课程:玩转算法系列–数据结构精讲 更适合0算法基础入门到进阶(java版) 此处是个人学习笔记,用作回顾用途 不要小瞧数组 1.使用java中的数组 Main.java: public cla ...

  3. Caché 实操《Caché 算法与数据结构-数组原理》学习笔记

    参考书  第二章 Caché 算法与数据结构 数组原理_yaoxin521123的博客-CSDN博客 本人Cache'小白,欢迎指教和交流.本文为学习原作者的代码进行代码重现后的总结精炼.使用数据库: ...

  4. 【算法和数据结构学习笔记】整合版

    文章目录 算法 前缀和 双指针法 四数之和 分治算法 Offer 58 II 左旋转字符串 回溯算法 动态规划 数据结构 数组 & String & 双指针 字符串 反转字符串 T54 ...

  5. 【实战笔记】Java 算法与数据结构-排序(选择、插入、冒泡、希尔、归并、快速、堆)

    文章目录 基础排序算法O(n^2) 选择排序 插入排序及优化 冒泡排序及优化 希尔排序及优化 高级排序算法O(nlogn) 归并排序及优化 快速排序及优化 堆和堆排序 排序算法总结 本文为慕课网实战课 ...

  6. 【笔记】Java数据结构与算法

    [笔记]Java数据结构与算法 文章目录 [笔记]Java数据结构与算法 1.八大排序应用场景 2.未完待续-- 1.八大排序应用场景 冒泡排序:优化后的冒泡排序可用于当数据已经基本有序,且数据量较小 ...

  7. 算法与数据结构简单启蒙,我当年学习算法走过的坑

    1.碎碎念 我的算法启蒙来自于紫书算法竞赛入门经典,但是不得不说从语言过度到算法,紫书并不是一个很好的开始.当时整本书除了数学和图论其实是看完了的,但真的有印象的大约只有暴力枚举法中枚举排列,子集生成 ...

  8. 算法与数据结构学习路线

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

  9. 别头疼了,你要的算法和数据结构的学习路线来了!

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

最新文章

  1. 做服务器_码迷SEO:细数那些做SEO巨坑的服务器们
  2. iptables防火墙详解
  3. java finally块_java finally块后的语句是否要执行
  4. placeholder如何实现换行
  5. Android开发之添加QQ群的方法(官方代码)
  6. mysql show 语句大全
  7. python发短信脚本_python脚本发送短信
  8. 卡片选项页面 JTabbedPane 的使用
  9. 2017-09-20 前端日报
  10. ITU-T E.800 有关服务质量(QoS)的术语定义
  11. word2016实现制表法设置公式居中,公式居中,编号右对齐
  12. JavaScript:判断两个日期之间的差距天数
  13. 概率论——伯努利和二项随机变量
  14. 史上最全最新手机号码号段大全
  15. HTML基础入门 第1天课堂笔记
  16. 科学计算机calc在哪儿,‎App Store 上的“NCalc科学计算器+”
  17. Qt中undefined reference to报错的三种可能性和解决方法(以libgdal为例)
  18. 渣本毕业两年经验,大厂内部资料
  19. 不行不行,不能再讨厌英语了,要爱上英语。。。I Love You。。。
  20. 什么是批标准化 (Batch Normalization)

热门文章

  1. html中table的colspan,表格中的colspan colspan
  2. Bootstrapping method
  3. 【JVM】本地方法栈与堆与方法区
  4. Process 的 waitFor() 造成的阻塞
  5. Win8/8.1 恢复功能大比拼:系统还原、刷新和重置,用哪个
  6. C++常用软件分析工具案例分析集锦汇总
  7. 【Flutter 2-6】Flutter手把手教程UI布局和Widget——Image控件、NetworkImage、AssetImage
  8. linux重定向logcat,logcat重定向adb命令.doc
  9. 淘宝618每日一猜6月6日答案-甄嬛在横店哪里参加的选秀?
  10. 信号与系统 卷积积分结合律证明