![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
似水~年华
这个作者很懒,什么都没留下…
展开
-
Linux环境下使用g++编译C++
单个源文件生成可执行程序下面是一个保存在 helloworld.cpp中的一个简单的C++程序的代码:/* helloworld.cpp */#include<iostream>using namespace std;int main(int argc, char* argv[]){ cout<<"hello, world!"<<endl; re...原创 2019-11-18 21:42:21 · 280 阅读 · 0 评论 -
ubantu输入法切换
一、 打开Fcitx配置分两种情况1. 在Bash中输入命令fcitx-configtool2. 点击“配置”,变打开Fcitx配置界面如图所示:3. 如果没有配置按钮,就点击“设置”如果所示:进入的这个设置,实际上是你安装的某个输入法的设置界面,在我机器上,就是搜狗的输入法设置。然后,在该输入法设置界面中,找到“Fcitx设置”。如图所示:二、 F...转载 2019-05-23 16:10:57 · 1781 阅读 · 1 评论 -
C++容器适配器stack 重载默认容器类型
容器适配器stack 重载默认容器类型1、何为适配器?标准库中的顺序容器有以下六种:vector、deque、list、forward_list、array,string。标准库定义了三种顺序容器适配器:stack、queue和 priority_queue。适配器是标准库中的一个通用的概念。容器、迭代器和函数都有适配器。本质上,适配器是一种机制,能使某种事物的行为看起来像另一种事物一...转载 2019-06-06 19:13:57 · 267 阅读 · 0 评论 -
C++随机数(rand和srand)函数用法详解(一)
C++提供了一组函数以生成和使用随机数字。随机数字就是从一组可能的值中进行随机选择而获得的一个值。该组中的值都有相同的被选中的几率。随机数字常用于许多不同类型的程序中,以下是一些示例:计算机游戏通常要使用随机数字来模拟一些随机过程,例如掷骰子或发牌。 模拟程序使用随机数字来决定后续将要发生的一系列操作或人与动物等的行为。可以创建使用随机数字的公式以确定特定事件在程序中出现的时间。 数据...转载 2019-07-02 19:28:02 · 1537 阅读 · 0 评论 -
C++随机数(rand和srand)函数用法详解(二)
历史悠久的rand()我们会使用从C继承而来的intrand();函数作为随机数发生器,该随机数的范围为[0, RAND_MAX],其中RAND_MAX是<stdlib.h>中通过宏定义的一个常量,在C和C++标准中,均为“不低于32767的正整数”,大部分编译器都使用了32767作为RAND_MAX。如果我们要使用它的话,需要注意的是,这个rand虽然随机性较...原创 2019-07-02 20:41:28 · 921 阅读 · 0 评论 -
C++STL 预定义函数对象和函数适配器
预定义函数对象和函数适配器预定义函数对象基本概念:标准模板库STL提前定义了很多预定义函数对象,#include <functional>必须包含。1使用预定义函数对象:void main(){ plus<int> intAdd; int x = 10; int y = 20; int z = intAdd(x, y); /...原创 2019-07-29 13:27:58 · 251 阅读 · 0 评论 -
C++-STL:vector用法总结
一、简介vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是容器的一种。对于容器来说,其重要特性之一便是于可以在运行时高效地添加元素。 类似于数组,vector采用连续内存地址来存储元素,因此vector属于顺序容器。也就意味着可以采用下标对vector的元素进行访问,和数组一样高效;同时它比数组更加灵活,它的大小(size)是可以动态改变的,且它的大小会被容器自动处理...转载 2019-07-30 19:46:34 · 199 阅读 · 0 评论 -
C++ vector的用法总结(整理)
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。vector 是C++ STL的一个重要成员,使用它时需要包含头文件: #include<vector>构造函数语法: vector(); vector( size_ty...转载 2019-07-30 19:57:55 · 578 阅读 · 0 评论 -
6 个技巧,提升 C++11 的 vector 性能
所有测试都在我的 Surface Book 中运行,这台笔记本拥有主频 2.6Ghz 的酷睿 i7 处理器,8 GB 内存,安装了 Windows 10 操作系统并使用VS2015 C++ 编译器编译运行。 我们会使用Stopwatch。这个工具由 Kjell 创建,在https://github.com/KjellKod/Stopwatch可以找到。 我们会运行每...转载 2019-07-30 20:06:37 · 476 阅读 · 0 评论 -
Windows下使用命令行界面调用VS2015编译器编译C++程序方法
本文依据win10 和 VS2015作为例子(其它版本文件夹可能不同)一、编译器路径设置vs编译器的名称是 cl ,安装目录下:D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin,添加路径到环境变量Path。二、添加头文件include和库文件lib:具体操作方法是,我的电脑->属性->高级->环...原创 2019-08-04 00:03:21 · 2243 阅读 · 1 评论 -
Windows下匿名管道进程通信
##昨天做网易雷火的一道笔试题,有一个密码锁是由一个函数实现的,函数Y=f(X);现获得了该函数的一个可执行文件,希望编写代码来测试它##下载来的可执行文件是一个控制台程序,输入一个浮点数X,会获得相应的Y;现在希望实现它:我们假设该可执行文件的源代码(子进程的实现机制)为:int main(int argc, char* argv[]){ double n; while ...原创 2019-08-05 14:27:37 · 861 阅读 · 0 评论 -
C++11中的新特性右值引用
一、 新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面:1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。2. 能够更简洁明确地定义泛型函数。...转载 2019-09-16 21:22:55 · 186 阅读 · 0 评论 -
new和malloc的联系与区别(上)
熟悉c++的朋友应该都知道,c++提供给了程序员与硬件打交道的可能性,比如说内存管理。一个高水平的c++程序员可以将c++程序的性能优化到极致,榨干硬件资源。而现在我想说说与内存管理有关的new 和 malloc()。先说说malloc(),malloc是从C语言那里继承过来的一个函数,其用于分配一片内存,它的返回结果是一个指向你所需求的内存的指针,其函数原型和使用例子如下:/* 函...转载 2019-09-23 11:52:53 · 328 阅读 · 0 评论 -
new和malloc的联系与区别(下)
这篇主要讲下new和malloc的区别:1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆...转载 2019-09-23 13:06:11 · 249 阅读 · 0 评论 -
右值引用、移动语义和完美转发(上)
c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。左值、右值C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值。看见书...转载 2019-09-26 21:05:51 · 182 阅读 · 0 评论 -
右值引用、移动语义和完美转发(中)
移动构造和移动赋值回顾一下如何用c++实现一个字符串类MyString,MyString内部管理一个C语言的char *数组,这个时候一般都需要实现拷贝构造函数和拷贝赋值函数,因为默认的拷贝是浅拷贝,而指针这种资源不能共享,不然一个析构了,另一个也就完蛋了。具体代码如下:#include <iostream>#include <cstring>#inclu...转载 2019-09-26 22:28:44 · 143 阅读 · 0 评论 -
右值引用、移动语义和完美转发(下)
完美转发所谓转发,就是通过一个函数将参数继续转交给另一个函数进行处理,原参数可能是右值,可能是左值,如果还能继续保持参数的原有特征,那么它就是完美的。void process(int& i){ cout << "process(int&):" << i << endl;}void process(int&& ...转载 2019-09-26 23:31:40 · 180 阅读 · 0 评论 -
VMware虚拟机下网络配置模式
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note我怕链接会失效,故转载此篇文章由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmwa...转载 2019-05-23 14:04:17 · 128 阅读 · 0 评论 -
linux下ifconfig命令详解
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfacesconfig)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改...转载 2019-05-22 12:35:54 · 610 阅读 · 0 评论 -
C++编写、生成、调用动态链接库
有些时候,我们想写自己的函数库以避免重复写代码,此文介绍如何使用Visual Studio编写,生成和调用自己的动态链接库。本文中采用隐式调用方式来调用动态链接库。0,实验环境说明: 集成开发环境:Visual Studio 10.0 操作系统: Windows 10 语言:C/C++1,编写自己的DLL我们分两部分介绍如何完成编写生成自己的DLL库。1.1...原创 2019-04-17 13:10:56 · 3082 阅读 · 0 评论 -
动态链接库和静态链接库的区别
两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。(所以无论是动态链接库还是静态链接库,都会有lib文件)两种链接方式:动态链接使用动态链接...转载 2019-04-17 15:27:07 · 126 阅读 · 0 评论 -
#pragma once
#pragma once是一个比较常用的C/C++预处理指令,只要在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次。#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个预处理指令了。#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支...转载 2019-04-17 20:10:53 · 219 阅读 · 0 评论 -
关于静态链接库(Lib,.A)与动态链接库(DLL,.SO)
在windows下一般可以看到后缀为dll和后缀为lib的文件,但这两种文件可以分为三种库,分别是动态链接库(Dynamic-Link Libraries),目标库(Object Libraries)和导入库(Import Libraries),下面一一解释这三种库。目标库(Object Libraries)目标库又叫静态链接库,是扩展名为.LIB的文件,包括了用户程序要用到 的各种函数。...转载 2019-04-17 21:17:33 · 1187 阅读 · 0 评论 -
DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的声明有两种方式:一种方式是:在函数声明中加上__declspec(dllexport);另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。方式一:在函数声明中加上__declspec(dllexport)/// 在动态链接库程序中/// 声明动态链接库(**.dll)的对外接口函数Test...转载 2019-04-17 21:29:44 · 130 阅读 · 0 评论 -
计算机编码总结(上)
Nodepad++相信大家都有用过,编码那一栏有ANSI格式编码,UTF-8格式编码,UTF-8-BOM格式编码,UCS-2 Big Endian以及UCS-2 Little Endian等等,这些其实就是我们常说的编码方式。你可能会想问为什么没有ASCII,Unicode,UTF-16呢,因为你肯定在写程序的时候用过,后面我们会说到这种可以说是广为流传的误区吧。以上提到的Notepad++中...转载 2019-04-22 19:17:35 · 503 阅读 · 0 评论 -
动态链接库和静态链接库介绍和实例(一)
一、库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是(.lib .dll) ,linux上对应的是(.a .so),windows...原创 2019-04-17 22:03:44 · 629 阅读 · 0 评论 -
计算机编码总结(下)
问题一:使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。同样是txt文件,Windows是怎样识别编码方式的呢?我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big...转载 2019-04-22 20:53:18 · 145 阅读 · 0 评论 -
动态链接库和静态链接库介绍和实例(二)
静态链接库创建和使用实例环境:win10 VS2015静态链接库的创建和使用都比较的简单,我们直接看例子理解就可以了。一、在vs2015中新建一个Win32控制台的静态链接库空工程static_lib,在工程中创建文件static_lib.h和static_lib.cpp这两个文件,static_lib.h和static_lib.cpp的源代码如下:/...原创 2019-04-18 13:32:36 · 393 阅读 · 0 评论 -
动态链接库和静态链接库介绍和实例(三)
动态链接库创建和使用实例生成和使用动态库生成动态库新建项目--win32项目--填写项目名--确定--下一步--应用程序类型:选择dll--附加选项:选择导出符号--完成可以看到生成了一个dllmain.cpp 文件,这是dll应用程序的入口,注意它和普通工程的入口main函数不同,这个文件我们不需要修改。在这个动态库中我们举例导出一个变量,一个类,一个函数,头文件dll....原创 2019-04-18 16:48:16 · 185 阅读 · 0 评论 -
C++中 explicit的用法
explicit 是避免构造函数的参数自动转换为类对象的标识符#include <iostream>using namespace std;class A{public: explicit A(int a) { cout<<"创建类成功了!"<<endl; } };int main(){ A a=10; ...转载 2019-04-19 15:51:21 · 112 阅读 · 0 评论 -
C语言宏#define中#,##,#@和\的用法
一、(#)字符串化操作符作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。如:#define example( instr ) printf( "the input string is:\t%s\n", #instr )#define example1( instr ) #instr当使用该宏定...转载 2019-05-24 13:48:26 · 360 阅读 · 0 评论 -
详解大端模式和小端模式
详解大端模式和小端模式一、大端模式和小端模式的起源关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一...转载 2019-05-21 22:12:39 · 165 阅读 · 0 评论 -
C++中的内存之堆栈
栈(stack),就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。堆(heap),一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的(DATA段)和未初始化的(BSS段),在C++里面没有这个区...原创 2019-05-21 22:24:06 · 267 阅读 · 0 评论 -
Windows下使用CMD/Powershell通过SSH协议远程连接Linux服务器
一、前言实验室配置有一台Linux服务器(ubantu),希望在自己的Windows电脑上能够对其进行远程连接。先是学习阶段,熟悉了Linux下的基本操作命令,然后在本机上安装虚拟机进行练手。本机的VMware workstation上装了两种Linux系统,分别是CentOS和Ubantu。下面分别进行一下介绍。二、Ubantua、准备工作在Windows下通过cmd命令...原创 2019-05-25 20:09:38 · 43953 阅读 · 3 评论 -
QT 添加 lib库
QT 添加 lib库扒自网友文章:一.添加第三方的头文件首先,添加头文件 #include "ControlCAN.h"然后,再将这个头文件放到工程的目录下二.添加.lib文件首先,将.lib文件放到对应的工程目录下(当然,放到其他路径也可以)。但是,仅仅做这一步是不行的,工程不会主动去包含这个.lib文件,你必须告诉他,lib文件在哪里,才可以。所以,我们要做...转载 2019-04-20 22:29:06 · 1145 阅读 · 0 评论