c+

c++ 实现KMP算法

KMP KMP算法解决的问题 字符串str1和str2,str1是否包含str2,如果包含返回str2在str1中开始的位置。 如何做到时间复杂度O(N)完成? 思路: 首先判断两个字符串是否为空串,并且str2的长度是否小于str1的长度,因为题目要求str1中包含str2。 以上都满足的情况下,首先定义两个变量分别为 x ,y 作为后续字符串中字符遍历的下标,然后再生成一个vector容器ne... »

c++11新特性多线程操作实战

c++11多线程操作 线程 thread int main() { thread t1(Test1); t1.join(); thread t2(Test2); t2.join(); thread t3 = t1; thread t4(t1); thread t5 = std::move(t1); thread t6(std::move(t1)); return 0; } t3,t4创建失败,因为... »

c++中c_str()的用法示例

//标准库的string类提供了三个成员函数来从一个string得到c类型的字符数组 //主要介绍c_str //c_str():生成一个const char*指针,指向以空字符终止的数组。 //这个数组应该是string类内部的数组 #include <iostream> //需要包含cstring的字符串 #include <cstring> using namespa... »

vs2019 实现C#调用c++的dll两种方法

1.托管与非托管的区别 链接地址(仅供参考) 除了链接中的,在实用角度出发: 非托管需要一个个声明引用,就很繁琐 但是托管(虽然麻烦)不用声明,只需要调好配置即可,还是比较方便的 为什么写这个博客,也是因为不同版本vs2017和vs2019有所区别,托管就容易踩坑,希望大家能看看,解决问题(我也很菜,大佬轻喷) 2.非托管类的实现 第一步:创建C++空项目(命名Caculate)添加一个类AddO... »

详解c++11以正确的姿势输出enum class的值

c++11新增了enum class,相比传统的enum好处多了很多,但也有些让人不太爽的地方,如:输出到std流时会报错,进行了强转则没有信息输出,那么,到底该如何将enum class的值出到std流呢?提供这个enum class的原因是因为旧的enum有不少缺点。简单描述一下:1. 容易被隐式转换成int2. underlying type 指的是编译器实现者幕后的实现细节导致了跨平台,跨... »

c++实现LinkBlockedQueue的问题

c++链表实现的阻塞队列最近从java源码里发现了阻塞队列的实现,觉得非常有趣。当需要出队时,出队head指向的下一个节点first中val的值,然后抛弃head本身指向的值,让head指向head的下一个节点first,此时head原来所指向的节点将被删除。那就需要对c++的一些锁知识和条件变量有了解。 »

详解如何用alpine镜像做一个最小的镜像并运行c++程序

需求 工作中我们如果要制作镜像,一般都是直接pull官方镜像,比如我们要运行一个c++程序我们可能直接pull一个gcc,或者ubuntu镜像就可以了,但是存在一个问题,我们只是要运行一个c++程序却要运行一个ubuntu系统,这是非常消耗资源的,所以就去网上搜了搜发现早期的docker都是使用alpine镜像来做基础镜像,所以就用alpile镜像来制作镜像 dockerfile FROM alp... »

c++ decltype关键字的用法

您可能感兴趣的文章:C++11特性小结之decltype、类内初始化、列表初始化返回值C++11新特性中auto 和 decltype 区别和联系C++ decltype »

c++ 网络库asio的优势

C++正是鱼和熊掌得兼的语言。为什么要用 asio 呢?ACE 犯了早期 C++ 库都会犯的一个错误,过度设计, 过度java化。固守的结果就是简陋原始的 libevent . 然而因为保守党巨大的人数优势, libevent 应其群众基础良好而获得了空前的广泛使用。libevent 去掉了ACE华而不实的包装,保留了异步事件,极大的简化了模型。libev 就是为了克服libevent的缺陷而诞生... »

c++ typeid关键字的使用

typeid关键字 注意:typeid是操作符,不是函数。这点与sizeof类似) 运行时获知变量类型名称,可以使用 typeid(变量).name() 需要注意不是所有编译器都输出”int”、”float”等之类的名称,对于这类的编译器可以这样使用 int ia = 3; if(typeid(ia) == typeid(int)) { cout <<"int" <<end... »

vs code 配置c/c++环境的详细教程(推荐)

写在前面的一段话 我这个配置方法反正在win10上是可以用的,我自己的笔记本就是win10的系统。但是在实验室蹭的学长的主机却是win7的系统,按道理来说这个配置应该是不分系统的?但是我确实是折腾了好几天,看了很多博客的配置方法,也问过稍微会一些的人,没有一个能解决我问题的,也希望有人能评论解决我的问题,我的vscode问题是c++只能编译运行无法debug。每次按F5都是一闪而过,无法调试,再按... »

c++11 多线程编程——如何实现线程安全队列

线程安全队列的接口文件如下: #include <memory> template<typename T> class threadsafe_queue { public: threadsafe_queue(); threadsafe_queue(const threadsafe_queue&); threadsafe_queue& operator=(co... »

c++11多线程编程之std::async的介绍与实例

本节讨论下在C++11中怎样使用std::async来执行异步task。 C++11中引入了std::async 什么是std::async std::async()是一个接受回调(函数或函数对象)作为参数的函数模板,并有可能异步执行它们. template<class Fn, class... Args> future<typename result_of<Fn(Args... »

ASP.Net中的async+await异步编程的实现

在.NET Framework4.5框架、C#5.0语法中,通过async和await两个关键字,引入了一种新的基于任务的异步编程模型(TAP)。在这种方式下,可以通过类似同步方式编写异步代码,极大简化了异步编程模型。 用法: public async Task<int> GetDotNetCountAsync() { // Suspends GetDotNetCount() to a... »

c++ 有趣的动态转换

缘起 最近,在项目代码中看到一个非常神奇的类型转换—— 类型A 的指针居然能动态转换成另外一个完全没有任何关系的类指针。这…… 完全颠覆了我的认知。 为了进一步了解这个神奇的操作,我特意模拟了项目代码中的情形,一起来看看吧。 代码简介 BaseA 和 BaseB 是两个基类,NewA 继承自 BaseA,NewB 继承自 BaseB。TestB() 会在堆上 new 一个 NewB 的对象,但是会... »

简单讲解c++ vector

在c++中,vector是一个十分有用的容器。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector 表示构造一个无名且含n个0的vector 对象。C++ 中Vector常用基本操作 »

详解c++ 静态成员变量

类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成 C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态... »

c++ 入门——浅析构造函数和析构函数

前文回顾 本文档环境基于Vscode + GCC + CodeRunner 关于C++的环境搭建请参考下面链接: https://www.jb51.net/article/186542.htm 由于本人具有C#开发经验,部分相同的知识就不再赘述了。只列一下需要记录的知识。 HelloWorld cout 代表输出<< cin 代表输入 >> endl;代表换行,清空缓冲区。... »

区分c++中的声明与定义

C++编码过程中,我们经常谈及“定义”和“声明”,二者是编程过程中的基本概念。我们需要使用一个变量、类型(类、结构体、枚举、共用体)或者函数时,我们需要提前定义和声明。定义和声明的过程,就像我们向图书馆借阅书籍一般,需要先完成书籍的印刷,即创造出书籍,这是一个定义的过程,有了书籍,我们需要到图书馆完成借阅的登记手续,这是申明的过程。完成了申明,我们有了使用书籍的权限,就可以尽情的畅游在知识的海洋。... »

简述c++ 发展史

到了2017年,C++迎来了C++17标准。C++仍在不断的发展,下一个版本将是C++20,C++历史上的标准变更如下。 »

c++访问私有private成员变量的常用方法

类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。 在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。 私有成员变量的常用访问方法如下: (1)通过公共函数为私有成员赋值 #include <iostream> using namespace std; class Test { p... »

举例分析private的作用(c/c++学习)

c++中private的用处 我知道我们可以用 public 中的值,把private中的数据给提出来,但是还是搞不懂private该怎么用,或者说在一个具体程序中,private有什么用。 class fun{ public: void setname(string x) { name =x; } string getname() { return name; } private: string... »

浅谈c++如何实现并发中的Barrier

c++的基本语法和有关多线程的语法。在研究Barrier的实现中,我查阅了蛮多的资料的。所以如果按照这个类比,实现一个barrier至少需要以下的几个变量: 需要同时在barrier等待的线程的个数。当前到达barrier的线程的个数。 »

实例代码讲解c++ 继承特性

——派生类需要自己的构造函数。         派生类中可以根据需要添加额外的数据成员和成员函数,甚至可以给予继承的原成员函数新的定义。    基类指针或引用可指向派生对象,反过来则只能使用强制类型转换。    派生类对象可使用基类的非私有成员。    可使用派生对象初始化基类对象或赋值。    一般不允许将基类对象赋给派生类对... »

详细分析c++ const 指针与指向const的指针

  最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义:   const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下: type *const 指针名称;   声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同... »

Page 1 of 22123»