![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++笔记
fengyun_w
这个作者很懒,什么都没留下…
展开
-
正则匹配以字串开头的多项字符串
#include <iostream>#include <regex>#include <vector>int main(){ std::regex reg("^e.*|^mp.*"); std::vector<std::string> ext{"en0", "en2", "rm", "mp4", "eth0", "null"}; for (int i = 0; i < 6; i++) .原创 2022-03-25 11:02:22 · 1483 阅读 · 0 评论 -
c++ 代码判断CPU 架构,操作系统类型,cmake 中判断CPU 架构,操作系统类型
在c++代码中,我们可以利用,系统或者编译器的宏定义来判断操作系统类型,cpu架构,这在跨平台程序中经常用到。c++代码中判断#include<iostream> int main(){#if defined __linux__ std::cout<<"linux system"<<std::endl;#elif defined __ANDROID__ std::cout<<"android system"<<s原创 2021-12-23 21:59:52 · 12153 阅读 · 2 评论 -
c++ 通过指针访问类中的private成员
除了通过类的成员方法访问类的私有成员变量,我们还可以通过指针的方式来访问。class test {public: void print() { cout << "a address:" << &a << endl; cout << "b address:" << &b << endl; }private: int a = 10; int b = 9原创 2021-06-28 16:19:21 · 1937 阅读 · 0 评论 -
C++继承时的对象内存模型
最近在复习c++ 继承多态的相关知识,看的头大,来做个总结,giao~单继承时的内存模型class base1{public: virtual void g1(){} virtual void f1(){} virtual void h1(){}public: int ba1 = 10;};class child:public base1 {public: void g1(){} //重写g1函数 void f2(){}private原创 2021-06-28 10:23:03 · 554 阅读 · 0 评论 -
从一个数组中删除另一个数组给出的下标值所对应的值
这是我在面试中遇到的一道题,遗憾的是我没有写出来。给定两个数组,第一个数组为数据,第二个数组为排序的下标的集合,删除第一个数组中由第二个数组给出的下标值对应的值,要求时间复杂度为o(n),空间复杂度为o(1)。对于这种要求,毫不犹豫的就要用覆盖的方式去删除,这样才能达到o(n)和o(1)。思想就是移动着用数组后一个值去覆盖前一个值,遇到第二个数组给的下标就跳过。#include<vector>#include<iostream>using namespace s原创 2021-06-22 21:22:14 · 261 阅读 · 0 评论 -
std::map c++两个map合并成一个map ,c++多个map的合并
#include <map>#include <iostream>int main(){ std::map<int, int> v1 = { {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }; std::map<int, int> v2 = { {4, 2}, {5, 2}, {6, 2}, {7, 2} }; std::map<int, int> v3 = { {8, 2}, {.原创 2020-08-26 11:46:21 · 11208 阅读 · 0 评论 -
c++智能指针和普通指针之间相互转换
#include <iostream>#include <memory>//智能指针的头文件class test{public: test(int d) :data(d){} int data;};int main(){ test *p = new test(10);//初始化一个test对象 std::shared_ptr&...原创 2020-02-07 20:25:34 · 13500 阅读 · 2 评论 -
跨平台网络编程,多个windows客户端与linux服务端socket通信,epoll实现i/o复用
本文实现Windows客户端与linux服务器之间的通信,socket网络编程。实现多个客户端连接一个服务器采用的方法不是用while循环,而是更高效的epoll i/o复用,当然你也可以用select 和poll。windows客户端(vs2013):#include <stdio.h>#include <Windows.h>#include <s...原创 2019-04-19 19:51:01 · 1066 阅读 · 0 评论 -
c++多线程互斥锁打印AABB
#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<pthread.h>#define COUNT 10static int i = 1;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;void* ...原创 2019-04-19 19:03:56 · 304 阅读 · 0 评论 -
c++虚机制和多态
c++中多态分为静态多态和动态多态: (1)静态多态:模板和重载 (2)动态多态:继承和虚函数静态多态就是在程序编译时就确定了所调用的函数,而动态多态是运行时才确定调用的函数。动态多态靠虚函数实现。 虚函数: 虚函数就是在继承中,基类提供一个接口,派生类继承基类,并且也在自己的类中实现了基类的方法,这样就会对基类的方法进行覆盖或者叫重写。当用基类指针指向派生类的对象的时候,实际调用的是...原创 2018-08-04 20:53:52 · 340 阅读 · 0 评论 -
c++、 STL中函数对象(仿函数)
定义:重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。又称仿函数。函数调用操作符必须声明为成员函数。一个类可以定义函数调用操作符的多个版本,由形参的数目或类型加以区别。仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求--函数指针无法和STL其他组件搭配...原创 2018-06-25 23:21:50 · 555 阅读 · 0 评论 -
c++ STL中map的用法详解
(一)map简介Map是STL 的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。(二)区...原创 2018-06-25 01:12:04 · 389 阅读 · 0 评论