C++
C++ STL等
u0uu
这个作者很懒,什么都没留下…
展开
-
extern和extern C
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会(C语言不支持函数重载),因此会造成链接时无法找到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名。最常见的用法,当链接器在一个全局变量声明前看到extern关键字,它会尝试在其他文件中寻找这个变量的定义。变量的声明:向程序表名变量的类型和名字,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。原创 2024-08-05 16:02:26 · 114 阅读 · 0 评论 -
STL汇总
2、关联容器:存储键值对,每个元素都有一个键(key)和一个值(value),并且通过键来组织元素。3、无序容器(C++11 引入):哈希表,支持快速的查找、插入和删除。1、序列容器:存储元素的序列,允许双向遍历。原创 2024-08-05 12:04:22 · 118 阅读 · 0 评论 -
深拷贝、浅拷贝
值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。存在的问题:如果定义了指针类型,但是没有自定义深拷贝函数,当用已有对象初始化另一个对象(调用浅拷贝函数)时,后一个对象的指针仅仅是指向了前一个对象指针指向的内存空间,当函数结束调用析构函数时,两个对象都会释放一次指针,导致内存泄漏。拷贝构造函数:用类的一个对象(的值)去构造另一个对象,后一个对象是不存在的,在拷贝构造的途中创建。引用是类型安全的,指针不是。原创 2024-08-01 11:10:57 · 292 阅读 · 0 评论 -
static_cast与dynamic_cast
static_cast是c语言的强制转换代替品;dynamic_cast会运行时检查该转换是否类型安全,只在多态类型时合法,即该类至少具有一个虚拟方法。static_cast在编译时期强制转换,dynamic_cast在运行时期转换(较安全)。原创 2024-07-31 20:30:50 · 189 阅读 · 0 评论 -
C++11新特性
nullptr是c++11引入的空指针常量值,NULL其实是个int型的值0,在重载函数中容易因为二义性编译失败。override:修饰派生类的函数,表明函数是基类函数的重写。此函数必须在父类中存在虚函数。3、std::function & std::bind & lambda表达式。final:禁止当前类进一步派生,类中的虚函数禁止进一步重载。1、auto和decltype。原创 2024-07-31 20:27:45 · 111 阅读 · 0 评论 -
C++ STL: unordered_set
unordered_set存储原理是声明一个有n个桶的数据结构,计算加入到unordered_set的新的值hash,然后计算hash%n后的值x,将新的值加入到桶x中。当桶x中已经有了元素,就直接链接在后边。使用hash散列的方式存储数据,是一种使用hash值作为key的容器。构造:unordered_set set;原创 2024-07-30 20:49:24 · 206 阅读 · 0 评论 -
C++ STL priority_queue
priority_queue是一个C++实现的堆/优先队列,默认为最大堆。插入时间复杂度o(nlogn)。头文件:#include原创 2024-07-30 13:54:48 · 210 阅读 · 0 评论