首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Toddler的笔记

    C++17 New Features

    笔者序 如果说 C++11 和 C++20 是两个改动大、影响比较深远的"大版本",那么我感觉 C++17 算是一个小版本。 (推荐 vs2019,gcc8,clang10,支持 C++17) C++17 这个版本让语法变的更自然,代码更容易读懂,会让人觉得: C++ 本该如此 1.Structured Binding Automatically . auto [ a, b, c ] = tuple; // or struct or array 2.CTAD (Class template argument deduction) Before C+ static variables you usually need to declare it in .h file and initialize it in some .cpp file. in C+ T> auto sum(T1 s, T... ts) { return s + sum(ts...); } And with C++17 we can write much simpler code

    1.4K40发布于 2020-06-09
  • 来自专栏C/C++基础

    C++17 fold expression

    C++17解决了这个问题,通过fold expression(折叠表达式)简化对参数包的展开。 2.语法形式 折叠表达式共有四种语法形式,分别为一元的左折叠和右折叠,以及二元的左折叠和右折叠。 return (args - ... - 1); } auto t = sub_one_left(2,3,4);// (((1-2)-3)-4) = -8 (5)comma fold 在C+ template 参考文献 [1]C++17中那些值得关注的特性(上) [2]C++17尝鲜:fold expression(折叠表达式)

    2K30发布于 2018-09-27
  • 来自专栏CPP开发前沿

    C++17常用新特性

    1 C++17 介绍 每次C++版本的发布都会带来很多新的特性,C++17也不例外,虽然有很多期待的特性没有包含进来,但是新增的特性依然挡不住它独特的魅力。 C++17发布于2017年,ISO C++ 委员会将其正式命名为:ISO/IEC 14882:2017。 2 C++17新特性 2.1 折叠表达式 从C++17开始,可以使用二元操作符对形参包中的参数进行计算,这一特性主要针对可变参数模板进行提升,可以分为左折叠和右折叠。支持的二元操作符多达32个。 C++17支持的类型包括:左值引用,整数,指针类型,成员指针类型,枚举。 i = 42 3 总结 对于C++17新增特性很多编译器已经都能够进行支持,当然在C++17版本中规划的内容也不止上面说的这些,如果大家有需要补充或者对上述内容进行指正的欢迎大家留言。

    2.7K21发布于 2021-11-16
  • 来自专栏C++

    C++17 新增属性详解

    C++17标准引入了多个新的属性(Attributes),这些属性为代码提供了更丰富的语义表达能力,同时帮助编译器生成更优化、更安全的代码。 本文将详细介绍C++17中新增的三个重要属性:[fallthrough]、[maybe_unused] 和 [nodiscard]。1. 总结C++17引入的属性系统扩展为开发者提供了更强大的工具来表达代码的语义意图,同时帮助编译器生成更优化、更安全的代码。

    26300编辑于 2025-01-24
  • 来自专栏跟Qt君学编程

    C++17之for循环新能力

    C++17为for循环增加遍历结构化数据的能力。

    2.2K30发布于 2020-02-24
  • 来自专栏用户1006619的专栏-1

    C++17中新特性

    C++17中,对auto表达式推导的规则进行了改变 // c++17 auto x3{ 1, 2 }; // error: not a single element auto x4 = { 3 }; 条件表达式中支持初始化语句 c++17中支持在 if 或者switch 语句中进行初始化, 这个能力的出现能够让代码更加的简洁。 但是如果使用c++17的语法, 在if条件中初始化res,则代码就会显得更加简洁 // c++17 map<int, string> c = {{1,"a"}}; if(auto res = c.insert 其他特性: 除此之外,C++17还增加了一些其他特性,文中没有一一列出。 C++17的新特性已经编译器的支持情况请参考 compiler_support#cpp17

    5.3K30发布于 2019-01-14
  • 来自专栏C++

    C++17 新特性解析:Lambda 捕获 this

    C++17 引入了许多改进和新特性,其中之一是对 lambda 表达式的增强。在这篇文章中,我们将深入探讨 lambda 表达式中的一个特别有用的新特性:通过 *this 捕获当前对象的副本。 C++17 中的 *this 捕获在 C++17 之前,如果你想在 lambda 表达式中使用当前类的成员变量或成员函数,你通常会捕获 this 指针。 为了解决这个问题,C++17 引入了通过 *this 捕获当前对象的副本的能力。这样,lambda 表达式就拥有了当前对象的一个完整副本,从而避免了潜在的悬挂指针问题。 总结C++17 的 *this 捕获为 lambda 表达式提供了更大的灵活性和安全性。通过允许复制当前对象,它不仅简化了代码,还增强了程序的健壮性。 希望这篇文章能帮助你更好地理解和使用 C++17 中的这一新特性。如果你有任何问题或建议,欢迎在评论区留言讨论!

    84300编辑于 2025-01-22
  • CentOS tencentOS 升级 gcc 支持 c++17

    目前环境中默认安装的gcc大多版本为 4.8.5,该版本并不支持 c++17。现为了满足对c++17 的依赖,需更新 gcc 版本。

    2.2K30编辑于 2024-07-12
  • 来自专栏C++

    C++17中weak_from_this详解

    六、总结weak_from_this 是 C++17 中引入的一个便捷方法,用于安全地获取当前对象的 std::weak_ptr。

    41300编辑于 2025-02-01
  • 来自专栏C++

    c++17 std::timespec_get 简介

    std::timespec_get 是 C++17 引入的一个函数,用于获取当前日历时间,并将其存储到 std::timespec 类型的对象中。它定义在头文件 <ctime> 中。

    27400编辑于 2025-02-23
  • 来自专栏C++

    C++17 特性:std::is_aggregate 深度解析

    C++17 也不例外,其中 std::is_aggregate 是一个非常实用的类型特性工具。本文将详细介绍 std::is_aggregate 的定义、用法以及实际应用场景。 从 C++17 开始,我们也可以使用 std::is_aggregate_v<T> 来直接获取这个布尔值,它是 std::is_aggregate<T>::value 的便捷写法。 总结std::is_aggregate 是 C++17 引入的一个非常有用的类型特性工具,它允许我们在编译时判断一个类型是否为聚合类型。

    21100编辑于 2025-02-09
  • 来自专栏C++

    C++17中的LegacyContiguousIterator(连续迭代器)

    C++17标准里,LegacyContiguousIterator(连续迭代器)是一类特殊的迭代器。它不仅具备随机访问迭代器的功能,还额外保证了逻辑上相邻的元素在物理内存中也是相邻存储的。 总结LegacyContiguousIterator是C++17引入的一种特殊迭代器,它结合了随机访问迭代器的功能和内存连续性的优势。

    20700编辑于 2025-02-16
  • 来自专栏未竟东方白

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

    ,这篇就是Anthony Calandra在https://github.com/AnthonyCalandra/modern-cpp-features/blob/master/CPP17.md 中对C+ 相比之下C++17的新内容要多很多,是完善的再完善 C++20由于好多特性都没被支持好,本身又属于非常大的一次变革,所以那部分就暂不翻译了 ? 现在我们可以使用*this(C++17)得到对当前对象的一个拷贝,而用this(C++11)则会继续捕获目标的引用 struct MyObj { int value {123}; auto getValueCopy fallthrough]], [[nodiscard]], [[maybe_unused]]属性(fallthrough, nodiscard, maybe_unused attributes) C+

    3.5K10发布于 2020-07-29
  • 来自专栏独行猫a的沉淀积累总结

    c++17好用的新特性总结

    截至目前来说,c++17应该是新项目的首选。C++14在11的基础上查缺补漏,并未加入许多新特性,而C++17作为C++11后的第一个大版本,标志着现代C++逐渐走向成熟。 这里总结下C++17在业务代码中好用的几个特性。 在C++17中,对auto表达式推导的规则进行了改变。 比如我想实现一个函数将不同类型的输入转化为字符串,在c++17之前需要写三个函数去实现,而c++17只需要一个函数。 map支持merge和extract  引用 c++17新特性有哪些-C#.Net教程-PHP中文网 C++17新特性_peanut_wu的博客-CSDN博客_c++17 C++17特性一览_李兆龙的博客的博客

    4.2K10编辑于 2022-05-25
  • 来自专栏C++

    深入探究 C++17 std::is_invocable

    C++17 引入的 std::is_invocable 系列类型特征就为我们提供了这样的能力,它允许我们在编译时进行调用可行性的检查,从而增强代码的健壮性和通用性。

    60400编辑于 2025-02-08
  • 来自专栏跟Qt君学编程

    C++17之判断有无包含某文件

      主要作用是在编译时候判断该系统环境是否存在某个文件,如果不存在则使用其他文件替代,以提高兼容性。

    71020发布于 2020-02-24
  • 来自专栏tkokof 的技术,小趣及杂念

    C++17,标准库有哪些新变化?

    看到一个介绍 C++17 的系列博文(原文),有十来篇的样子,觉得挺好,看看有时间能不能都简单翻译一下,这是第二篇~ C++17 有许多新的标准库变化,简单起见,这篇文章只介绍了以下内容:std::string_view string_view std::string_view 代表一个字符串的非所有权引用(即不负责管理引用字符串的生命周期),他表示的是一个字符序列(可以是 C++ 中的 string 或者 C风格的字符串)的"视图".C+ the Standard Template Library(标准模板库中的并行算法) 关于STL中并行算法的介绍比较简短: 标准库中的 69 个算法会提供串行,并行以及矢量并行这3个版本.另外,新标准(C+ (译注:图中红色标明的 for_each 并非是新算法,所以实际C++17新引入的算法只有7个) 算法的介绍这么多了,关于这个话题的进一步细节你可以看看我写的另外一篇文章.

    1.7K10编辑于 2022-01-12
  • 来自专栏C++

    C++17 std::inclusive_scan 算法详解

    C++17 中,std::inclusive_scan 是一个非常有用的算法,它属于 C++ 标准库中的 <numeric> 头文件。 1. std::inclusive_scan 的定义std::inclusive_scan 是 C++17 引入的算法,用于计算前缀和(或前缀操作)。

    25300编辑于 2025-02-11
  • 来自专栏全栈程序员必看

    C++17实现的读写锁「建议收藏」

    1.shared_mutex和shared_lock很有意思的两个关于共享线程锁的特性 #include #include<shared_mutex> #include #include #include using namespace std; class Counter { public: std::size_t Get() const { std::shared_lockstd::shared_mutex lock(mtx); return value_; } void Increase() { std::unique_lockstd::shared_mutex lock(mtx); value_++; } void Reset() { std::unique_lockstd::shared_mutex lock(mtx); value_=0; } private: mutable std::shared_mutex mtx; std::size_t value_ = 0; }; std::mutex g_mtx; void worker(Counter &counter) { for (int i = 0; i < 3; i++) { counter.Increase(); std::size_t value = counter.Get(); std::lock_guardstd::mutex lock(g_mtx); cout << std::this_thread::get_id() << ” ” << value << endl; } } int main() { const std::size_t size = 2; Counter counter; vectorstd::thread v; v.reserve(size); v.emplace_back(worker, std::ref(counter)); v.emplace_back(worker, std::ref(counter)); for (std::thread &t : v) { t.join(); } system(“pause”); return 0; }

    33910编辑于 2022-09-22
  • 深入理解 C++17 std::is_swappable

    深入理解 C++17 std::is_swappable引言在 C++ 编程中,交换两个对象的值是一个常见的操作。为了确保代码的通用性和安全性,我们需要在编译时就能知道某个类型的对象是否可以被交换。 C++17 引入了 std::is_swappable 类型特征,它允许我们在编译时检查一个类型的对象是否可以使用 std::swap 进行交换。 std::is_swappable 的变体除了 std::is_swappable,C++17 还提供了几个相关的类型特征:std::is_nothrow_swappable:检查一个类型的对象是否可以被交换 " << std::is_swappable<MyClass>::value << std::endl; return 0;}结论std::is_swappable 是 C++17 中一个非常有用的类型特征

    27000编辑于 2025-02-08
领券