C++语言基础知识
文章平均质量分 83
CodingGirl121
这个作者很懒,什么都没留下…
展开
-
reinterpret_cast的本质
先看看下面的代码:#include iostream> using namespace std;void main() { int i = 875770417; couti" "; char* p = reinterpret_castchar*>(&i); for(int j=0; j4; j++) coutp[转载 2014-05-16 17:07:43 · 2290 阅读 · 1 评论 -
我所熟悉的C++智能指针auto_ptr vs shared_ptr (一)
在开发过程中,曾经使用过两种C++的智能指针,如今,便总结一下,顺便比较比较二者使用中的区别,注意避免入坑的危险。:-D我们知道,在C++中,如果创建一个指向某个对象的指针,那么在使用完这个对象之后我们需要自己delete它。否则,会造成一个悬垂指针(dangling pointer),非常容易造成内存泄漏。事实上,如果在使用指针的同时,程序运行抛出异常,那么所指向的对象仍然不会被安全原创 2015-10-28 09:24:43 · 2287 阅读 · 0 评论 -
C++中的容器类详解
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。vector 连续存储结构,每个元素在内存上是连续的;支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操作效率低下;转载 2015-10-27 09:52:45 · 1374 阅读 · 0 评论 -
借助STL实现一些常用的C++的几种字符串处理函数
【1】 string_trim : 去除字符串首尾的空格#include <iostream>#include <string>std::string string_trim(const std::string& str){ std::string::size_type pos_first = str.find_first_not_of(' '); if (pos_first原创 2015-10-12 10:38:10 · 539 阅读 · 0 评论 -
C++ STL相关知识及容器使用要点
关于STL的一些东东:1,除了引用类型,所有内置或复合类型都可用作容器的元素类型。因为引用不支持一般意义上的复制运算。 可以被作为容器的元素的类型,必须具有以下两点特征: (1)可赋值; (2)可复制。 2,容器类型分类: (1)顺序类型:vector , list , deque , stack(容器适配器) , queue(容器适原创 2015-10-26 10:46:59 · 463 阅读 · 0 评论 -
C++中的unordered_map,以及与STL中的map的比较
unordered_map是很早就知道的概念,但却一直没有认真去理解,单单以为它是Boost库里对map的实现,今天在做Leetcode的题目的时候,发现了使用它的优越性,索性翻开书,并查一查资料,把它大致搞个清楚,省的以后还要再查再找,浪费时间。希望会有帮助,Bless~~unordered_map是C++ Boost库中的内容,这里的unordered翻译成“无序”,但并不是完全的“无原创 2015-01-28 20:53:06 · 5115 阅读 · 0 评论 -
linux下如何用GDB调试c++程序
GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。转载 2014-05-28 13:35:15 · 524 阅读 · 0 评论 -
C++语言中 关键字typedef的作用及其使用规则
在C++中,有一个关键字typedef,它主要是把一种数据类型定义为某一个标识符。在程序员之后的程序开发中可以直接应用这一标识符来实现相应数据类型变量的定义。 根据我的理解,它就是把一大长串的名字定义简化成程序员自己定义的一小撮名字,来提高编程的速度,同时从某个角度来说,实现了代码的隐藏。 以下,将对typedef的使用做一个简单的说明和整理:原创 2014-05-28 11:23:32 · 870 阅读 · 0 评论 -
C++中struct与class的区别
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制,体现在两个方面: 1)默认的继承访问权限。stru转载 2014-05-28 09:44:50 · 1444 阅读 · 0 评论 -
C++的四种强制类型转换
一直以来,Coding时沿袭了在C语言中编程的习惯,在对不同类型数据作转换时,也按照C语言的处理方法,如下:在C语言中,在进行自动类型转换的时候,如果原来的数是无符号数,那么在扩展的时候,高位填充的是0;如果是有符号数,那么高位填充的时符号位!这一点有点类似于“>>”操作符,当无符号数右移的时候,高位填充的是0;有符号数右移的时候,高位填充的是符号位。C语言的类型转换分为:自动类型转换(编原创 2014-05-16 18:11:53 · 1231 阅读 · 0 评论 -
我所熟悉的C++智能指针auto_ptr vs shared_ptr (二)
鉴于auto_ptr 所出现的无法复制,且不能满足标准容器对元素的要求,所以boost库中提供了一种新型的智能指针 shared_ptr,它通过引用计数(reference counting)的原理,解决了多个指针之间共享对象所有权的问题,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时才删除被包装的动态分配的对象。 shared_ptr也可以安全地放到标准容器中,并原创 2015-10-28 10:46:01 · 939 阅读 · 0 评论