![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++学习
文章平均质量分 77
自学C++
追光少年羽
这个作者很懒,什么都没留下…
展开
-
C++容器亲自总结
一、容器的定义 在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法。二、容器的种类1、顺序容器:是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。顺序容器包括:...原创 2022-02-28 20:49:29 · 7962 阅读 · 2 评论 -
C++命名空间以及编译过程
一、命名空间1、首先在头文件中进行函数申明,这里需要注意的是C++中函数可以在多个地方进行申明,但是函数实现只能在一个地方。2、include头文件,其实本质就是把头文件中的内容放到include的位置,呼应上面说的函数可以在多个地方进行申明,但是函数实现只能在一个地方。3、命名空间的引入其实是因为我们在main函数中可能引用了多个cpp的文件,但是这些cpp的文件中出现了相同名字的函数,通过命名空间我们就可以指定调用某个空间下的某个函数,而不是笼统的把所有函数都引用进来。compare.原创 2022-02-28 17:24:35 · 720 阅读 · 0 评论 -
C++各种库文件对比.a和.so,.lib和.dll
1、两种库Linux下的静态库以.a结尾(Winodws下为.lib) Linux下的动态库以.so 或 .so.y结尾,其中y代表版本号(Windows下为.dll),而且,Linux下的库必须以lib开头,用于系统识别(如:libjpeg.a libsdl.so)静态库必要的目标代码的是在对程序编译的时候被加入到程序中,而运行时不再需要.a的库了而动态库,则是在运行时转载所以,动态链接的可执行代码比静态链接的可执行代码小的多把一个源代码编译成.so:gcc -shared -o l原创 2022-02-19 09:27:38 · 3788 阅读 · 0 评论 -
windows+CMake+mingw 搭建c c++开发环境
CMake 安装CMake 下载官方下载地址: https://cmake.org/download/cmake下载页面选择自己系统(Platform)对应的版本并下载这里我们选择Windows win64-x64 Installer: Installer tool has changed. Uninstall CMake 3.4 or lower first!CMake 下载完成CMake 安装安装时根据自己系统的安全设置,可能会出现如下对话框,不用担心,直接点击".原创 2022-02-17 11:33:47 · 842 阅读 · 0 评论 -
#pragma once用法总结
1.#pragmaonce这个宏有什么作用?为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。2.两者的使用方式有何区别?示例代码如下:方式一:#ifndef__SOMEFILE_H__#define __SOMEFILE_H__... ... // 声明、定义语句...原创 2022-02-16 12:02:42 · 2444 阅读 · 1 评论 -
C/C++动态链接库(dll)文件解析
1.动态链接库(dll)概述没接触dll之前觉得它很神秘,就像是一个黑盒子,既不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其他dll调用来完成某项工作的函数,只有在其他模块调用dll中的函数时,dll才发挥作用。在实际编程中,我们可以把完成某项功能的函数放在一个动态链接库里,然后提供给其他程序调用。像Windows API中所有的函数都包含在dll中,如Kernel32.dll, User32.dll, GDI32.dll等。那么dll究...原创 2022-02-16 11:56:17 · 13904 阅读 · 3 评论 -
python和C语言互相调用
1、Python调用C动态链接库使用C语言编译产生共享库,然后python使用ctype库里的cdll来打开共享库。 (1)C语言文件:pycall.c/***gcc -o libpycall.so -shared -fPIC pycall.c*/ #include <stdio.h> #include <stdlib.h> int foo(int a, int b) { printf("you input %d and %d\n", a, b.原创 2022-02-13 20:34:05 · 1767 阅读 · 0 评论 -
C++迭代器(STL迭代器)iterator详解
要访问顺序容器和关联容器中的元素,需要通过“迭代器(iterator)”进行。迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。迭代器按照定义方式分成以下四种。1) 正向迭代器,定义方法如下:容器类名::iterator 迭代器名;2) 常量正向迭代器,定义方法如下:容器类名::const_iterator 迭代器名;3) 反向迭代器,定义方法如下:容器类名::revers..原创 2022-02-10 03:40:55 · 1334 阅读 · 0 评论 -
C语言 Make命令教程
make只是一个根据指定的Shell命令进行构建的工具在linux和unix中,有一个强大的使用程序,叫make,可以用它来管理多模块程序的编译和链接,直至生成可执行文件make使用程序读取一个说明文件,称为Makefile,Makefile文件中描述了整个软件工程的 编译规则和各个文件之间的依赖关系;Makefile就像是一个Shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化编译”,一旦写好,只要一个make命令,整个软件功能就完全自动编译,极大的提高了软件.原创 2022-02-10 02:17:06 · 4246 阅读 · 0 评论 -
C++中map的用法(续)--map和iterator结合使用
map的特性:所有元素都会根据元素的减值自动被排序。map的所有元素都是pair,同时拥有实值(value)和键值(key)。pair的第一个元素会被视为键值,第二个元素会被视为实值。map不允许两个元素拥有相同的键值。下面看一下<stl_pair.h>中的pair定义:template <class T1, class T2>struct pair{undefinedtypedef T1 first_type;typedef T2 second_ty.原创 2022-01-19 22:43:01 · 1689 阅读 · 0 评论