C++那些事之string那些事 当我们使用C++时,库的基础知识比较熟悉,尤其是在C++中创建字符串时使用的std::string。...这无疑是对旧的C风格“字符串”(使用以空字符结尾的字符数组)的一种改进。然而,C++标准库在C++17和C++20中引入了更有用的组件,可以帮助你编写更高效的代码。...与为函数创建字符串副本不同,我们可以简单地查看现有字符串!此外,非常灵活,不仅可以将C++样式的字符串转换为字符串视图,甚至可以将C样式的字符串转换为字符串视图。...函数以std::string_view作为参数,这使得这个函数非常轻量级和灵活,因为没有制作任何字符串的副本,这个函数可以通过传递C和C++样式的字符串以各种方式使用。...使用可以极大地帮助这些努力。此外,考虑使用最新的字符串成员函数,如starts_with和ends_with,以获得可读且易于实现的字符串解析代码。
static那些事 当与不同类型一起使用时,Static关键字具有不同的含义。...我们可以使用static关键字: 静态变量: 函数中的变量,类中的变量 静态类的成员:类对象和类中的函数 现在让我们详细看一下静态的这些用法: 静态变量 函数中的静态变量 当变量声明为static时,空间将在程序的生命周期内分配...这对于在C / C ++或需要存储先前函数状态的任何其他应用程序非常有用。...int main() { for (int i=0; i<5; i++) demo(); return 0; } 输出: 0 1 2 3 4 您可以在上面的程序中看到变量...obj; } cout << "End of main\n"; } 输出: Inside Constructor End of main Inside Destructor 您可以清楚地看到输出的变化
提起编程,一定离不开编程语言,有些软件既可以用A语言来编写,也可以用B语言来编写,为什么会有这么多编程语言?面对这么多编程语言该如何选择?...C语言 c语言被称作高级语言,相比于汇编语言,它有着丰富的灵活性和可编程性,操作系统底层大部分就是使用c语言编写的,因为它更接近底层,因此它有着非常优秀的效率。...c语言经常被称作高级语言鼻祖,因为很多其它语言都是由c语言编写的。 高级语言 无论是java,还是python,还是php,它们底层都是使用c语言编写的。...因此,细心的你会发现,编程语言的进化离不开底层语言,可以说没有机器语言就没有汇编语言,没有汇编语言,也就没有c语言,没有c语言也就没有java,python等编程语言。...当我们觉得汇编也有些复杂的时候,我们就添加了c语言,这样汇编语言又变得容易操作了。 未来的编程语言会怎样,我们无法确定,但有一点可以肯定,它的底层一定还会有汇编,还会是机器语言。
,讲到了redis五大基本数据类型的使用场景,除了string,hash,list,set,zset之外,redis还提供了一些其他的数据结构(当然,严格意义上也不算数据结构),一起来看看redis还可以做哪些事...我们可以把Bitmaps想象成一个以位为单位的数组,数组的下标叫做偏移量。使用Bitmaps的优势就是占用空间更少。..."ip5" 计算今天官网访问的ip数 pfcount 2020-11-04:ip 返回结果为3 查看2020-11-04和2020-11-05这两天总共有多少个独立ip访问过网站 先将两天的数据做并集...这是因为如果有三个元素a,b,c要放入同一个数组中去,假设a经过三次hash,得到1,5,7三个位置,那么就会将这三个位置修改成1,b经过三次hash,得到2,4,6三个位置,将这三个位置修改成1。...c经过三次hash得到2,5,7三个位置,但是经过前两个元素hash后,这三个位置已经修改成1了,那么我们能说c一定存在吗?显然不能!
仍在施工中 介绍C++ STL的一些函数和容器的用法。 简介 C++ Standard Template Library(标准模板库),简称 STL 成员 容器 map 有建立映射的关系。
C语言学到什么程度可以做项目 都说编程学习是一个漫长的过程,会的东西越多,感觉懂的越少。要达到可以做项目的状态还是需要下些功夫的。但你非得说没有时间限制,懂一点点你就可以去做项目了。...前提是你boss的亲戚,叫你来锻炼的不是来做项目的。 我们所说的做项目是有统一的项目计划,时间节点,模块划分,人员配置等这些条件作用的项目。做项目虽然是一个个小的代码组成但绝不等同于写小程序。...一、做项目是有计划,完成时间的。这点就要求我们对基础的东西必须掌握 1、C语言关键字,用法你得明白吧,基本的api。掌握的越好越熟练。写起代码来也就更带劲了。...上面这些都是得必须掌握的基础,没有这些基础做项目免谈。 二、项目开发代码部分是实现划分的模块功能。...这个就说明你做项目至少在code上已经达到开发项目要求了。
要达到可以做项目的状态还是需要下些功夫的。但你非得说没有时间限制,懂一点点你就可以去做项目了。前提是你boss的亲戚,叫你来锻炼的不是来做项目的。...我们所说的做项目是有统一的项目计划,时间节点,模块划分,人员配置等这些条件作用的项目。做项目虽然是一个个小的代码组成但绝不等同于写小程序。那像写小程序这样的话,找找几个头文件,看几个函数就解决了。...小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。...裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程 做项目是有计划,完成时间的这点就要求我们对基础的东西必须掌握 1、C语言关键字,用法你得明白吧,基本的api。掌握的越好越熟练。...这个就说明你做项目至少在code上已经达到开发项目要求了。
C++那些事之nodiscard 自C++17引入[[nodiscard]]属性以来,我们在编写API时有了一种更强大的工具,用于标记那些在调用时不应该被忽略的函数返回值。...这在那些依赖于返回值的函数中尤为有用,例如谓词函数或工厂函数。 如何使用[[nodiscard]]? 在类、构造函数以及枚举上使用[[nodiscard]]都是可能的。...警惕:[[nodiscard]]的陷阱 尽管[[nodiscard]]可以有效地防止返回值被无意中忽略,但我们需要注意一些潜在的陷阱。...[[nodiscard]] ScopeGuard createScopeGuard() { // Implementation of a scope guard } // 在这里,用户可以选择忽略返回值...,导致作用域立即销毁,从而失去清理效果 std::ignore = createScopeGuard(); 尽管[[nodiscard]]表明函数返回值不应该被忽略,但用户仍然可以通过std::ignore
本篇文章翻译自 https://jguegant.github.io/blogs/tech/sfinae-introduction.html 文中代码见《C++那些事》: https://github.com...在某些情况下,例如序列化,动态语言或具有反射功能的语言确实很方便。...好吧,如果您懒于阅读其余内容,这是我能给您的最简单的答案:与动态类型的语言不同,您的编译器一旦启动便可以访问许多静态类型信息。我们可以限制您的编译器对这些类型进行一些工作是有意义的!...对于那些卡在c++ 11和c++ 14之间的人来说,这也很有趣。 c++ 98中的解决方案依赖于3个关键概念:重载解析、SFINAE和sizeof的静态行为。...SFINAE,可以肯定!到那时,我们可以将hasSerialize函数重新构造为序列化函数,并使其返回std :: string而不是编译时boolean。但是我们不会那样做!
下面有个链接,可以查看更多内容。 这里简单说一下pair第一个参数是个迭代器,第二个参数是个布尔值。
Koenig查找或参数依赖查找描述了C ++编译器如何查找不合格的名称 。简单来说:如果在函数的名称空间中定义了一种或多种参数类型,则不必为函数限定名称空间。...); // Works Fine - MyNamespace::doSomething() is called. } 在上面的示例中,既没有使用using声明也没有使用using指令,但是编译器仍然可以通过应用
学习C++之前最好找到这门语言的特点并补补计算机的基础知识。 大家都知道C和C++的最大区别便是一个是面向过程的,一个是面向对象的。...由于C++是从C演变过来的,所以很多语法知识都是很相似的,几乎可以说是差不多。 ?...我们来康康面向对象和面向过程的那些小区别哈: 面向过程:这个机器语言、汇编语言、高级语言都支持;那么这个最初的目的便是用于数学计算,毕竟没有面向对象;主要工作:设计求解问题的过程;缺点便是大型复杂的软件难以用这个方式编写...:由面向对象的高级语言支持;一个系统由对象构成;对象之间通过消息进行通信,可以说面向过程是面向对象的基础。...计算机语言也有分类的,比如C++就是高级语言,而C呢,作为底层语言,既不是高级语言,也算不上低级语言,所以大家一般称之为中级语言,而能被称之为中级语言的也只有C语言这一家啦,一家独大 ? 。
C++20模块那些事 目录 C++20模块那些事 1.模块单元 1.1 Global Module Fragment 1.2 purview 1.3 Private module fragment 2...C++20引入了一种替代 #include 指令的新方式,称为模块。 下面来深入学习一下模块。 1.模块单元 C++模块由一个或多个翻译单元(tu)组成,其中包含用于模块声明的特定关键字。...2.4.1 purview区#include 使用import替换#include export module foo; import ; 例如: g++-13编译如下,可以通过c...g++-13 -std=c++20 -fmodules-ts -x c++-system-header iostream g++-13 -fmodules-ts -std=c++20 -x c++ shape.cppm...➜ g++-13 -fmodules-ts -std=c++20 -x c++ shape.cppm circle.cppm rectangle.cppm shape.cc shape:circle:
2.template disambiguator 在C++中,当使用模板的依赖名称(dependent names)时,有时需要使用模板消除符(template disambiguator)来帮助编译器区分这些名称...这样编译器就可以正确地解析该名称,而不会产生二义性。 关键字template只能在操作符::(作用域解析)、->(通过指针访问成员)和.
C++那些事之时间转换 1.导语 首先感谢各位对《C++那些事》的持续关注,也感谢各大公众号的推荐!...也欢迎大家积极推荐本项目,让更多人从中学习并提出一些问题来,不断完善项目,《C++那些事》这两天霸榜github trending C++,下图可见: ? 今日,来学习一下Linux时间相关函数。...目标1:请使用C/C++获取Linux的当前时间,并转换成你想要的格式,例如:2020-06-04 11:12:01,然后再转为Unix时间戳,例如:1591240321,最后计算当前时间与之前的某个时间的间隔...上述可以通过C++11的chrono实现,感兴趣的可以实现一下,本节通过Linux函数来实现。 2.实践 首先引入tm结构体,很多人估计没听过tm,tm是时间的一个结构体。...3.总结 时间转换非常灵活 本节使用的时间函数是Linux系统库函数 后面推展可以使用c++11的时间chrono库
C++那些事之玩转optional 0.导语 本节将会引入5个版本的optional实现,最终揭秘C++ STL optional实现,最后给出一个小项目作为练习的例子,让大家感受step by step...1.引入 C++17之后,C++标准库提供了std::optional,它是一个管理可选包含值的类模板。可选类型或有时也称为Maybe类型表示可选值的封装。...that may or may not be present. cppreference: https://en.cppreference.com/w/cpp/utility/optional 那么在C+...aligned_storage::type; StorageType data; bool hasValue; }; 6.union版optional 在C+..._Storage { _Empty_byte _M_empty; _Up _M_value; }; 使用处: _Storage _M_payload; 我们对这个做一层抽象
在rapidjson中提供了GetType()方法,可以返回如下Type: //! Type of JSON value enum Type { kNullType = 0, //!...< number }; 可以看到,基本上json所需要的类型都涉及了,简直碉堡了~ 那么这对于解析字符串时判断类型至关重要~ 2.一些练习 下面将重点阐述解析操作: 如何获取某个结点 如何获取所有结点...使用Parse进行解析,方便快捷,Document支持操作符[],因此可以方便根据某个key拿到value。...解析所有孩子跟遍历很像,可以通过专门的迭代器进行遍历,每个结点就是个Value,不断遍历即可,下面将其封装成一个函数,可以拿到一个json串的所有结点。...rapidjson里面可以提供StringBuffer与Writer,我将实现封装到下面模板函数里面: template string stringify(const T& o)
C语言文件读取操作特别是在linux内核,嵌入式开发中使用的较为频繁。...文件读取示例文件读取操作char buf[100] = {0};fd = open("xxx.c");// fd接受返回值,-1为错误char writebuf[20] = "I love";// 读取文件到...buf数组中,长度为10个ret = read(fd, buf, 10);// 写入数据ret = write(fd, writebuf, strlen(writebuf));close(fd); C语言中...,文件操作为:打开(open),操作(write),关闭(close)区别于python等语言,缺少关闭操作,但同时有保存操作。
PgSQL技术内幕 • statement_timeout做的那些事 statement_timeout是Postgres种的一个配置参数,用于指定SQL语句执行的超时时间,当超时时就取消该SQL的执行...一旦PG流程陷入某些底层函数出不来,导致statement_timeout超时,就会因为不能继续执行后续流程进入CHECK_FOR_INTERRUPTS做真正取消SQL的操作。
C++那些事之Mixin惯用法 大家好,我是光城,今天给大家分享C++那些事里面的一个惯用法:mixin 混合(Mixins)是Lisp中的一个概念。...C++那些事之Mixin惯用法 示例1:缩放与旋转 示例2:redo与undo 示例3:重复打印 标准库 参考 示例1:缩放与旋转 假设我们要对一个长方形/正方形进行缩放、旋转、添加边框等,这些操作都会影响其宽度与高度...,我们可以使用mixin来实现。...首先,有一个类,我们可以print这个人的名字。...std::nested_exception 是一个多态 mixin 类,它可以捕获并存储当前异常,从而可以在彼此之间嵌套任意类型的异常。
领取专属 10元无门槛券
手把手带您无忧上云