C++
孤独的拉普拉斯
菜鸟级程序员
展开
-
删除字符串数组中相同的字符串
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;template<typename T>void prinfVector(vector<T> &nums) { for (const auto &c : nums) cout << c << " ";原创 2020-08-22 14:53:14 · 684 阅读 · 0 评论 -
二叉树的前序,中序和后序遍历的递归与迭代代码
前序遍历递归借助的程序的运行时栈,所以改为迭代时,本质上借助stack去模拟运行时栈。递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti原创 2020-08-06 21:01:49 · 168 阅读 · 0 评论 -
DevC++ [Error] ld returned 1 exit and VS error LNK2019
楼主今天写关于大顶堆的类的时候,在写完上滤之后,准备调试程序,结果VS提示我错误,如下:这我就很懵逼了,所以为了排除编译器的错误,我又点开了DevC++,又码了一遍代码,还是出现了错误:纳闷的我苦寻结果,最终在自己定义的类中找到了坑人的地方,因为我是直接调用的VS构造类,所以VS给出的析构如下:完全就不是一个完整的析构函数,所以将其补充完整后(加上花括号或者default),程序恢复正常:总结:如果是定义了一个类,一定要注意规范的函数书写,不然就会像楼主那样闹出笑话。...原创 2020-08-15 16:10:47 · 126 阅读 · 0 评论 -
const_cast与编译器优化
const_cast我们知道C++四种cast转换,它们分别为:const_cast,static_cast,dynamic_cast和reinterpret_cast。楼主在学到这几种转换时,对const_cast产生了性趣,根据原理它是能够将const对象的const特性去除,所以楼主就写了下面这段代码来验证: const int a=5; int *p=const_cast<int*>(&a); *p=4; cout<<"a: "<<a<&l原创 2020-08-11 13:24:47 · 175 阅读 · 0 评论 -
C++ size_t和size_type
size_t和size_type的使用是为了让我们的程序更具移植性。起初我理解size_t对应类似int,而size_type对应类似于unsigned,两者在具体使用的是应该略有区别,后面跟朋友讨论时,他跟我说,没有道理说两者有什么区别,还为我举例论证。为了以后对两者不再模糊,于今天写下笔记方便回忆。事实上,标准容器限定了size_t为一个Allocator::size_type的别名,我们可以在vector中的allocator中找到其定义,如下图所示。所以,在标准情况下,两者完全一致。对于此,原创 2020-05-22 08:38:14 · 279 阅读 · 0 评论 -
C++ 类型别名的三种方式
类型别名是C++用来使类型在某些情况下更加容易理解而定义的类型的同义词。总共三种方法可以用来定义类型别名:1.#define:宏定义本质替换,所以也可以定义类型的同义词;2.typedef:传统方法;3.using:C++11新方法例子:typedef string qq;#define temperature doubleusing age = int;int main(){ qq name = "543975127"; temperature mon = 36.5; age a原创 2020-05-20 22:01:38 · 1511 阅读 · 0 评论