编程语言
文章平均质量分 73
编程语言学习C++和C等
LoveLittleMango
这个作者很懒,什么都没留下…
展开
-
字符串分割strtok和strtok_r
strtok()函数将字符串str根据delim分解为零或多个非空标记的token。原创 2023-04-24 14:24:51 · 227 阅读 · 0 评论 -
std::shared_ptr和std::weak_ptr学习记录
std::shard_ptr是智能指针,通过引用计数的方式共享对象的所有权,在引用计数为0时自动释放对象占用的内存。int main(){ int *p = new int(10); std::shared_ptr<int> a(p, [](int* p) {std::cout << "[deleter called]\n"; delete p;}); std::cout << "p=" << p <...原创 2022-04-30 16:57:58 · 529 阅读 · 0 评论 -
std::mutex和std::lock_guard
互斥锁是一种可锁定的对象,它被设计用来在关键代码段需要独占访问时发出信号,防止具有相同保护的其他线程并发执行并访问相同的内存位置。互斥对象提供独占性,不支持递归性(也就是说,一个线程不应该锁定它已经拥有的互斥对象,否则会导致死锁)。 构造函数:仅支持默认构造函数,不支持拷贝和移动构造函数。完成构造后,处于unlock状态。互斥锁的构造本身不是原子的:在构造时访问对象可能会引发数据竞争。 lock():调用线程锁住互斥对象,必要时阻塞,互斥对象被作为原子操作访问/修改(不会导致数据竞争)。 ...原创 2022-04-27 17:18:05 · 8783 阅读 · 1 评论 -
std::thread的join()和detach()
std::thread:代表单独的线程对象。同一进程中的线程共享同一个地址空间。一个初始化的thread对象代表一个激活的线程,该对象是joinable的,有唯一的线程id。一个只构造但没有初始化的线程对象是non-joinable的线程,所有non-joinable的线程的id都是一样的。对joinable的线程执行join()或者detach()操作后,该线程就变成non-joinable的了。构造函数:default (1) thread() noexcept;initialization (原创 2022-04-27 10:45:30 · 449 阅读 · 0 评论 -
C++的特殊成员函数(Special members)与关键字default和delete
特殊成员函数是在特定情况下隐式定义为类成员的成员函数。有如下六个:一、默认构造函数:如果类申明时没有显示定义任何构造函数,则编译器假定该类具有隐式定义的默认构造函数。例如申明如下的类:class Example {public:int total;void accumulate (int x) { total += x; }};编译器会假定有一个默认构造函数:Example() {},因此通过如下语句直接定义一个变量是能编译过的Example ex;一旦类有显示申明的构造函数,编译器就不原创 2022-02-21 13:55:51 · 904 阅读 · 0 评论 -
c++中的 for_each 函数
C++ 学习过程中可以参考http://www.cplusplus.com/referencefor_each()是一个模板函数,源码如下:template<class InputIterator, class Function>Function for_each(InputIterator first, InputIterator last, Function fn){while (first!=last) {fn (*first);++first;}return fn;原创 2022-01-24 15:48:44 · 436 阅读 · 0 评论 -
C++的Lambda表达式学习记录
C++的Lambda表达式转自https://www.cnblogs.com/jimodetiantang/p/9016826.html,稍作修改(对代码进行验证,并提供输出结果)。概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参原创 2022-01-21 11:22:35 · 78 阅读 · 0 评论