C++
文章平均质量分 68
emmmzhang
这个作者很懒,什么都没留下…
展开
-
C++快速入门
C++快速入门a + b = c一个非常简单的demo#include <iostream>int main(int agrc, char* argv[]){ std::cout<< "Enter two numbers: "<< std::endl; int v1, v2; std::cin &原创 2018-10-18 21:33:16 · 237 阅读 · 0 评论 -
如何获取vector的一个迭代器iterator的地址
在使用vector时,使用*iterator可以读出迭代器指向vector中的值,那如果想读出iterator的地址,该怎么表示呢?思考对于常规的指针而言,可以用int *ptr来表示一个指向整型变量的指针,*ptr即指向整型变量的值,ptr即地址代码如下#include <iostream>using namespace std;int main(){ int i =...原创 2018-11-27 23:56:23 · 10233 阅读 · 0 评论 -
vector中使用erase操作删除迭代器的问题(避免野指针)以及end的地址变化
在vector中,使用erase来剔除对应的元素,但是使用iterator的时候需要注意不要让iterator变成野指针vector的erase在C++ Reference 中,对erase的说明如下:vector::erase - C++ Reference http://www.cplusplus.com/reference/vector/vector/erase///c++98i...原创 2018-11-27 17:48:32 · 11537 阅读 · 6 评论 -
vector中push_back后iterator失效程序崩溃的原因
vector的push_back操作在c++ reference中,对push_back的描述如下:void push_back(const value_type&val);void push_back(value_type &amp;amp;&amp;amp; val);Add element at the endAdds a new element at the end of the vector...原创 2018-12-04 21:05:58 · 6298 阅读 · 4 评论 -
C++多线程的原子操作、线程阻塞
头文件#include <Thread>及原子操作在C++11中,<Thread>头文件包含了Thread类,提供线程的管理。原子操作:不可被中断的一个或者一系列操作,这些操作要一次性执行完毕,或者一个都不执行。多线程存在的问题在多线程中,由于进程的多个线程都是共享该进程的所有资源,那么如果有多个线程访问同一个资源时,可能会出现问题。如果多个线程都是只读操作,...原创 2018-11-29 21:55:59 · 8644 阅读 · 1 评论 -
线程安全、C++多线程的管理(detach、join、get_id)
线程安全线程安全函数:当一个函数被多个并发线程反复调用的时候,它的结果始终是正确的一般线程不安全的情况,是由于同一个进程的不同线程共享进程内存空间中的全局/静态存储区和堆,如果一个函数中包含全局变量和静态变量,那么可能会线程不安全,导致程序错误。但是如果对全局变量和静态变量的操作只有读,没有修改的话,也可以将这个函数看做是线程安全的。C++多线程(C++11)多线程demoC++11的...原创 2018-11-29 18:06:28 · 3756 阅读 · 1 评论 -
指针、指针常量、常量指针的概念和区分
在学习指针的时候,经常会遇到指针常量、常量指针这两个概念。指针常量: 就是说指针自己是常量,指针本身的地址不能变,但是指针指向地址的值可以变常量指针: 指针指向地址的值,是常量不能修改。但是指针本身可以修改,可以让指针指向其他地址。这两个概念比较绕,下面通过代码对他们进行区分。指针:#include &amp;lt;iostream&amp;gt;using namespace std;int ma...原创 2018-11-20 12:33:24 · 188 阅读 · 0 评论 -
C++基类的虚析构函数(virtual)与内存泄露
一、C++ 内存泄露C++本身没有GC机制,所以需要开发人员做好内存管理。一般情况,C++内存泄露主要原因为:1. 在构造和析构函数中,没有匹配new和delete;2. 没有将基类的析构函数定义为virtual(如果没有定义virtual的话,析构函数只清理自己的成员)二、虚析构函数的作用下面根据三个场景来说明基类中virtual虚析构函数的作用1. 派生类指针指向派生类对象...原创 2018-11-22 17:23:39 · 937 阅读 · 0 评论 -
C++ Primer(第五版) 第三章Chap.3 课后代码题 答案
C++ Primer (第五版)》最近在补基础,在看《C++ Primer (第五版)》,先把 第三章Chap.3 自己写的代码题发上来。。不定期更新3.4#include &lt;iostream&gt; #include &lt;string&gt;using namespace std;int main(){ string str1, str2; cin &gt;&gt;原创 2018-11-21 20:00:57 · 194 阅读 · 0 评论 -
多维数组中下标的含义
多维数组一、多维数组定义 数组名,代表数组的第一个元素存放的地址,对于int arr[10]; 来说,arr即指向arr[0]地址。定义一个多维数组: int matrix[3][4] = {0,1,2,3, 4,5,6,7, 8,9,10,11}; 数组的元素是顺序存储的。把这个二维数组理解为矩阵的话,matrix即3行4列的矩阵。(矩阵的概念只是更好的理解二维数组,数据在内存中...原创 2018-11-20 17:15:42 · 5281 阅读 · 1 评论 -
C++中 string作为参数的传递(string类型的引用 )
C++ string作为参数的传递(string类型的引用 )在传递参数的时候,如果参数是string类型,可以用string类型的引用,减少内存的拷贝。例如:void func(const string& para){}int main(int agrc, char **argv){ //... string str = "test"; func(test); //......原创 2018-11-05 12:46:25 · 51722 阅读 · 1 评论 -
C++ —— 封装(1)
(部分内容来自慕课网)类和对象根据不同的目的抽象不同的信息封装:选择性暴露 访问限定符:public、protected、private对象实例化从栈中实例化(自动回收)从堆中实例化(需要手动将申请的内存释放)对象的访问栈中使用栈中使用new申请一个对象,使用完之后需要delete,并指向NULLDemo定义了一个类,通过栈和堆两种不同的方式对类的对象进行实例化...原创 2018-10-22 01:14:14 · 159 阅读 · 0 评论 -
C++杂记。。(引用、const、函数特性、内存管理)
引用指针类型的引用类型 *&指针引用名 = 指针;结构体的引用函数参数引用constint const *p = NULL;const int *p = NULL; //和上一句等价int x = 3;const int *p = &x; //此时不能通过*p修改x的值(可以用p = &y)int x = 3;int *const p =...原创 2018-10-21 21:54:00 · 183 阅读 · 0 评论 -
用uint64来表示IP+Port
uint64_t这是uint64在<stdint.h>(/usr/include/stdint.h)中的定义/* Unsigned. */typedef unsigned char uint8_t;typedef unsigned short int uint16_t;#ifndef __uint32_t_definedtypedef uns...原创 2018-10-25 17:32:17 · 700 阅读 · 0 评论 -
C++标准库类型
标准库string类型string s;cin >> s; //读取并忽略开头所有的空白字符(空格、制表符、换行符等)。读取字符直至再次遇到空白字符,读取终止。string::size_type类型,从逻辑上讲,size()成员函数似乎应该返回整型数值,但事实上,size操作返回的是string::size_type类型的值。任何存储string的size操作结果的变量必须为s...原创 2018-10-18 23:08:14 · 630 阅读 · 0 评论 -
C++变量和基本类型
基本内置类型通常将8位的块作为一个字节,32位或者4个字节作为一个“字”(word)。1 字 = 4字节 = 32位 = 4 * 8位一般的,short类型为半个机器字(word)长,int类型为一个机器字长,long类型为一个或者两个机器字长(在32位机器中,int和long类型字长相同)unsigned型取值:0~255signed型取值:-128~127 表示signed类型最常见...原创 2018-10-18 23:03:12 · 229 阅读 · 0 评论 -
vector的reserve的使用(避免内存重新分配以及内存分配的方式)
文章目录vector的reserve的作用Demo:对比使用reserve的区别Demo运行结果分析新的疑问:大于capacity指定之后的动态分配重新分配空间后内存地址的变化vector的reserve的作用之前提到vector中不断的push_back,会进行内存的重新自动分配的问题(详见:https://blog.csdn.net/hl_zzl/article/details/847...原创 2018-12-10 18:40:43 · 50659 阅读 · 6 评论