分类: Programming

10 篇文章

关于最近见到的一部分CPP问题的思考与解答
前言 在逛知乎时,偶然遇到了这样一个回答: 这里有两组面试题,都是最基础的题目,但是轻松通过的话已经超过我面试过的所有人。 Welcome to the C/C++ Quiz!C/C++ Quiz 2 本文就该页面提到的题目进行思考与解答(注:默认少打的分号、拼错的变量、函数、类等名字不算错误并已更正) C++ Quiz 2 Part B. Que…
vector中emplace_back与push_back的不同
前言 std::vector中有两个函数都能向容器尾部添加元素,分别是push_back和emplace_back 在发展历史上,emplace_back较push_back后推出,以解决push_back中存在的一些效率问题。 我们现在引出三个问题: emplace_back能否全面代替push_back emplace_back是否在所有场景下…
std库中的一个SFINAE实例
GCC std库实现中的一个SFINAE实例 Part 1. 源代码 在std::tuple的swap函数上有这样一个noexcept声明: noexcept(__and_<__is_nothrow_swappable<_Elements>...>::value) 作用是检测tuple内的每一个元素是否是不抛出可交换的,这里…
thumbnail
C++ Memory Order
前言 原子变量是C++解决多线程中数据竞争、线程同步的一种方式,而内存序(Memory Order)则是使用原子变量前的一个重要知识。 在Luyu Huang's Blog的文章中,已经对C++的内存序做出了比较清晰易懂的解释,本文的目的旨在提炼其文章中的核心思想,补充其文章中所提到的不足和发表一点作者自己的看法与感想。 原子变量 在使用原子变量时…
中译中:将Cppreference上的部分词条再译为中文
CPP/语言/重载决议 在这一页面,有着以下的词条: 构造函数候选的额外规则: 在构造类型 D 的对象时,如果满足以下所有条件,那么从类类型 C 继承的首个形参类型是“到 P 的引用”的构造函数(包括从模板实例化的此类构造函数)会从候选函数集合排除: 实参列表只有一个实参 C 引用关联于 P P 引用关联与 D 该词条比较难以理解,牵扯的概念较多,…
thumbnail
C++23’s New Feature: Deducing this
C++23's New Feature: Deducing this 0. 引言 C++23带来了新的语法支持:Deducing this,作为C++23中的重要特性,使C++程序的编写更加简洁和灵活,但也带入了一定的理解成本。本篇文章旨在介绍该特性的语法、基本使用与一些使用场景。 本文中所有示例代码的编译及运行环境:Windows, clang+…
thumbnail
C++20: Coroutine学习笔记
C++20: Coroutine Part 0. 引言 C++20引入了新的语言特性:协程(Coroutine),为C++的异步程序编写提供了新的范式,C++20对协程的设计提供了大量的可定制点,提高了协程程序的灵活度,但也加大了对协程程序的理解难度,本篇文章旨在带领读者了解协程的基本使用、相关概念、<coroutine>头文件的介绍。…
C++template模板元编程浅析:std::tuple
Intro.std::tuple的使用场景不算很多,但是std::tuple的实现手法中却蕴含了模板元编程的很多思想和方法,下面我们来浅析std::tuple的实现和其背后的“黑魔法”。 Part 1. 用例我们先来了解std::tuple的使用:auto t = std::tuple {1, 2.0f, "abc"};std::cout <…
隐藏
变装