首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏CPP开发前沿

    C++14新增特性汇总

    C++14整体来说只是发行的一个小版本,在C++11大版本的基础上做了一些优化和缺陷的修复。C++14在2014年8月18日正式批准宣布,同年12月15日正式发布release版本。 1 变量模板 变量模板是C++14中新增的特性,可以将变量实例化成不同的类型,变量模板的定义方法如下所示: template < 形参列表 > 变量声明 在上面的语法中,变量声明即为变量模板名,形参列表可以有一个或者多个 ,使用方法如下: template<class T> constexpr T pi = T(3.1415926535897932385L); // 变量模板 在实际编码中,C++14以前如果要实现上面的功能 在C++14中,泛型lambda是普通lambda的升级版,具体使用方法如下: 2.1 有两个形参的 int main () { auto glambda = [](auto a, auto&& b) 在C++11中,constexpr只能只用递归,C++14后进行了优化和提升,可以使用局部变量和循环。且不用将所有的语句放在一条return语句中进行编写。

    73110发布于 2021-11-16
  • 来自专栏RTSP/RTMP直播相关

    C++14新特性扫盲探究

    闲暇之时,聊到C++14,实际上C++14相对之前的11并没有太大的改动,或者说更像C++11标准基础上的查漏补缺,C++14之后,还有17、20甚至23,所以说,C++14更像个过渡版本。 下面粗略聊聊C++14新特性:图片语言特性:初始化列表(Initializer lists):允许在构造函数中使用初始化列表来初始化成员变量。 模块系统:C++14引入了模块系统,可以将代码分解为更小的、可重用的部分,提高代码的可维护性和可重用性。 其他改进:std::chrono(时间库):C++14引入了std::chrono库,提供更灵活的时间处理功能。 类型转换(Type conversions):C++14改进了类型转换规则,提高了代码的可靠性和性能。std::thread(线程库):C++14提供了更强大的线程库,支持更多的线程操作和同步机制。

    1.1K00编辑于 2023-07-12
  • 来自专栏未竟东方白

    【翻译】C++14的新特性简介

    之前写完了《C++Primer》的笔记,但是《C++Primer》已经是快十年的老书了,其包含的C++特性仅仅到C11为止,因此又去看了些C++14的特性,发现Anthony Calandra在https ://github.com/AnthonyCalandra/modern-cpp-features/blob/master/CPP14.md 中有对C++14重要的新特性的简介,看完就翻译整理后发上来了

    4.5K20发布于 2020-07-29
  • 来自专栏C++技术干货

    掌握现代 C++:Lambda 在 C++14、C++17 和 C++20 中的演变

    二、C++14中的Lambda在C++14中,lambda获得了4项主要增强功能:默认参数模板参数广义捕获从函数返回lambda2.1、默认参数在C++14中,lambda可以采用默认参数,就像任何函数一样 myLambda(1)<<'\n';输出:1-21-02.2、模板参数在C++11中必须定义lambda参数的类型:automyLambda=[](intx){std::cout<<x<<'\n';};在C+ ;2.3、广义捕获在C++11中,lambda只能捕获其作用域中的现有对象:intz=42;automyLambda=[z](intx){std::cout<<x<<'-'<<z+2<<'\n';};C+ */f(){return[](intx){returnx*2;};}在C++14中可以通过用作返回类型来返回lambda。这在一段代码中间有一个大的lambda的情况下很有用。 不过,有一个例外:std::array非变异访问操作在C++14中立即变为std::arrayconstexpr,而在C++17中变为非变异访问操作constexpr。

    24710编辑于 2025-11-29
  • 来自专栏iDoitnow

    C++17中的shared_mutex与C++14的shared_timed_mutex

    在多线程的应用开发中,我们经常会面临多个线程访问同一个资源的情况,我们使用mutex(互斥量)进行该共享资源的保护,通过mutex实现共享资源的独占性,即同一时刻只有一个线程可以去访问该资源,前面我们介绍了C++11中使用互斥量和互斥量的管理来避免多个读线程同时访问同一资源而导致数据竞争问题(即数据的一致性被遭到破坏)的发生,这里的数据竞争问题往往只涉及到多个线程写另外一个或多个线程读操作的时候,而对于多个线程进行读且不涉及写操作时,不存在数据竞争的问题。面对多线程涉及多访问,少读取的场景,我们有以下读写的例子:

    2K21编辑于 2023-11-21
  • 来自专栏C++技术干货

    从C++ 14到C++ 17:理解聚合初始化是如何工作的

    二、C++14中的代码一个示例代码:template<typenameDerived>structBase{private:Base(){};friendDerived;};structDerived: C++14的代码可以编译,但是稍微修改一下,让派生类不把自身作为模板形参传递给基类,即使在C++14也无法编译:template<typenameDerived>structBase{private:Base c++14第一个版本编译没有问题。 在C++14中,这使Y无法进行聚合初始化。但是在c++17中,可以这样构造一个Y:Yy{1,2,3,4};//orYy{{1,2,3},4};两种语法分别将a、b、c和d初始化为1、2、3和4。 通过对比C++14的代码,发现在C++17引入的扩展聚合初始化语法可以大大简化代码,并提供更好的可读性和可维护性。

    14100编辑于 2025-12-29
  • 来自专栏用户11956881的专栏

    【C++】现代C++的新特性constexpr,及其在C++14、C++17、C++20中的进化

    constexpr会自动忽略,这个函数就相当于一个普通函数 能看出来,C++11对于constexpr修饰函数还是相当相当严格的,但这些规定会在后面的C++标准中逐步放开,时代还是在进步的~ 二、constexpr在C+ +14中的进化 C++14中,大幅放宽了对constexpr函数的限制,使其语法和功能更接近普通函数: 允许了constexpr函数内部声明和初始化局部变量 支持函数内的if语句、for/while语句 、switch语句等 函数内可以有多条return语句 函数的返回类型可以是void、自定义类型、STL的std::array容器、等更多复合类型 实验时,要确保编译器支持的是C++14标准: constexpr

    16410编辑于 2025-12-18
  • 来自专栏cpp加油站

    c++11&14-编译

    1.2 c++11编译 一般的,我们要编译c++11,都要使用g++ -std=c++11,但据我测试,7.1.0的版本已经默认支持c++11和c++14了,所以就不用再写明-std=c++11的选项了 ,可以直接使用g++编译c++11或者c++14的代码啦,当然如果想知道某个特性到底是属于c++11还是c++14,就可以使用-std=c++11和-std=c++14来辨别。

    64620发布于 2021-04-16
  • 来自专栏后端

    C++一分钟之-泛型Lambda表达式

    C++14中,引入了泛型lambda表达式,这是一项强大的特性,允许我们编写更加灵活和通用的代码。 在C++14之前,lambda表达式只能捕获特定类型的参数。 例如:auto add = [](int a, int b) { return a + b; };从C++14开始,你可以使用auto关键字来创建一个可以接受任何类型参数的lambda表达式:auto 结论泛型lambda表达式是C++14引入的一项强大工具,它提高了代码的灵活性和重用性。然而,正如任何强大的工具一样,它也带来了潜在的陷阱。

    53510编辑于 2024-07-16
  • 来自专栏优雅R

    CentOS/Redhat R包使用新的gcc编译【更新】

    一些有C++代码的R包可能会用到一些新的C++特性,需要C++11或者C++14。这个问题通常在CentOS/红帽系统上出现,因为系统稳定的要求,这个系列的系统它的C++版本很低。 /rh/devtoolset-9/root/usr/bin/g++ -std=c++11 -fPIC CXX14=/opt/rh/devtoolset-9/root/usr/bin/g++ -std=c+ x86_64-conda-linux-gnu-g++ -std=c++11 -fPIC 2CXX14=~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c+ dmlc-minimum0.cc -o amalgamation/dmlc-minimum0.o 38~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c+ -c rabit/src/engine.cc -o rabit/src/engine.o 39~/miniconda3/bin/x86_64-conda-linux-gnu-g++ -std=c+

    2.4K10编辑于 2022-01-21
  • 来自专栏Skykguj 's Blog

    Sublime-Text 4 C++ Build-System

    { // Windows // build only "shell_cmd": "g++ -std=c++14 -g -Wall \"${file}\" -o \"${file_base_name "terminus_exec", "cancel": "terminus_cancel_build", "shell_cmd": "g++ -std=c+ inputs // [Recommanded] "name": "Run in CMD", "shell_cmd": "g++ -std=c+

    57930编辑于 2023-04-09
  • 来自专栏大数据

    C++一分钟之-泛型Lambda表达式

    C++14中,引入了泛型lambda表达式,这是一项强大的特性,允许我们编写更加灵活和通用的代码。 在C++14之前,lambda表达式只能捕获特定类型的参数。 例如: auto add = [](int a, int b) { return a + b; }; 从C++14开始,你可以使用auto关键字来创建一个可以接受任何类型参数的lambda表达式: auto 结论 泛型lambda表达式是C++14引入的一项强大工具,它提高了代码的灵活性和重用性。然而,正如任何强大的工具一样,它也带来了潜在的陷阱。

    43610编辑于 2024-07-17
  • 来自专栏iDoitnow

    ​数组和C++ std::array详解

    17 前 constexpr reference at( size_type pos ); //C++17 起 const_reference at( size_type pos ) const; //C+ +14 前 constexpr const_reference at( size_type pos ) const; //C++14 起 其具体用法如下: std::array<int,3> data +14 前 constexpr const_reference front() const; //C++14 起 注:在空容器上对 front 的调用是未定义的。 : reference back(); //C++17 前 constexpr reference back(); //C++17 起 const_reference back() const; //C+ +14 前 constexpr const_reference back() const; //C++14 起 注:在空容器上调用 back 导致未定义行为。

    1.5K10编辑于 2023-09-05
  • 来自专栏光城(guangcity)

    Linux 内核大转变:是否将迈入现代 C++ 的时代?

    在我的选择中,C++14 是具有合理元编程支持的“最低”版本。没有早期版本的类型地狱(C++11 拥有大部分,但 C++14 填补了一些关键的缺失部分)。 从上面可以看出几个关键点: C++成熟性 标准C++的易用性 C++14和C++20的增强支持 元编程的便利性 当然除了以上的内容之外,还有陈述了不选用Rust的原因,相比Rust,C++的语法更加熟悉 我们将看到LKML(Linux内核邮件列表)上的这次讨论是否能够取得足够的进展,以支持现代C++代码——或者至少是Linux内核中的某个定义的C++14~20子集——在2024年及以后。 特别是如果有共识允许在内核中使用C++14/C++20的子集,可能在将更广泛的编译器支持推出之前,还需要一些时间,然后才能提高基础编译器的要求。

    58910编辑于 2024-01-17
  • 来自专栏笔耕不辍

    C 和C++语言的标准

    C++14:是 C++11 的后续版本,于 2014 年发布。 C++17:是 C++14 的后续版本,于 2017 年发布。 C++20:是 C++17 的后续版本,于 2020 年发布。 其中,C++98 是最初的 C++ 标准,但在实际开发中已经很少使用,而 C++11、C++14、C++17、C++20 和 C++23 都是现代 C++ 标准,不断引入新的特性和语法糖,使得 C++

    2.6K30编辑于 2023-03-15
  • 来自专栏高性能服务器开发

    Modern C++,学炸了!!

    所谓现代 C++(即所谓的 Modern C++)指的是 C++11 及之后的版本,目前最新版本是 C++20,这期间一共有 C++11、C++14、C++17 三个版本。 4.2 C++14 的改动 C++14 是一个变动比较小的版本,主要是对 C++11 的新特性做了一些完善或者修正一些小的错误。 再例如 std::unique_lock 在 C++11 引入,std::shared_lock 在 C++14 才引入。 C++17 就 C++14 的这种改变,对旧的代码不会产生任何影响,但可以让后来的开发更加灵活。 +14 特性,VS 2017 完美支持 C++14 和部分 C++17 特性,VS 2019 完美支持 C++17 大多数语言特性。

    3.9K10发布于 2021-10-18
  • 来自专栏全栈程序员必看

    decltype 使用

    好看点 template <typename T,typename I> auto show(T& a, I i) { return a[i]; } C++14才支持,而且有点小问题. 但是C++14支持,C++14这里正常编译. 但是auto不支持引用类型推导.这里是基本类型,是个右值。 C++14允许decltype(auto)组合完美的推测.C++11可以通过后置的方式达到同样的效果.C++14更加简洁. 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    52320编辑于 2022-09-30
  • 来自专栏机器人课程与技术

    机器人CPP编程基础-02变量Variables

    C++14是C++语言的最新标准,它引入了一些关于变量的新特性和改进。以下是一些关于C++14中变量的详细介绍: auto关键字:C++14引入了auto关键字,用于自动推断变量的类型。 列表初始化和变量声明:C++14支持使用花括号({})进行列表初始化,可以直接将初始值赋给变量,无需使用赋值运算符。 MyClass { public: MyClass(int a, int b) : m_a(a), m_b(b) {} private: int m_a; int m_b; }; 通用委托表达式:C+ 静态断言:C++14引入了静态断言(Static Assert),用于在编译时检查条件是否满足。如果条件不满足,编译器将产生错误或警告。 右值引用和移动语义:C++14引入了右值引用(Rvalue Reference)和移动语义(Move Semantics),以优化资源的管理和性能。 以上是C++14中关于变量的详细介绍。

    55730编辑于 2023-08-11
  • 来自专栏后端学习之旅

    C++中auto关键字的用法详解

    return 0; } 所以auto无疑是十分不错的选择 5、auto在C++14和C++17的更新 C++的auto关键字最初在C++11中引入,主要用于自动类型推导,使编程更简洁。 在后续的C++14和C++17标准中,对auto的使用进行了一些扩展和更新,进一步提高了其灵活性和功能性。 下面详细介绍这些更新: C++14中对auto的更新 返回类型推导: 在C++14中,auto可以用于推导普通函数的返回类型。 template<class T> auto add(T x, T y) { return x + y; } 泛型Lambda表达式: 虽然Lambda表达式在C++11中就已经支持,但在C+

    1.3K10编辑于 2024-04-30
  • 来自专栏Yunfeng's Simple Blog

    NumPy的C++替代NumCpp使用教程

    接下来就是编译C++代码,这里以Linux下g++编译为例说明,需要注意的有2个点: NumCpp只支持C++14以及以上版本,所以编译时需要加--std=c++14 需要将NumCpp所在的目录添加到头文件包含指令 -I里 具体如下: g++ test_num_cpp.cpp --std=c++14 -Iincludes/ 编译完后运行生成的可执行文件: .

    1.2K10编辑于 2023-10-21
领券