首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

高效的使用stl::map和std::set

1、低效率的用法 // 先查找是否存在,如果不存在,则插入 if (map.find(X) == map::end()) // 需要find一次 {     map.insert(x); // 需要find...一次 } // 下面这段代码是一个意思 if (0 == map.count(X) // 需要find一次 {     map.insert(x); // 需要find一次 } // 或者是先判断是否存在...,如果不存在则插入,反之如果存在则修改 if (map.count(X) > 0) // 需要find一次 {     map.erase(X); // 需要find一次 } map.insert(x)...; // 需要find一次 // 对于erase存在同样低效的用法 if (map.count(X) > 0) // 需要find一次 {     map.erase(X); // 需要find一次 }...else {     // 不存在时的处理 } 2、高效率的用法 // 解决办法,充分利用insert和erase的返回值,将find次数降为1 map::size_type num_erased =

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    std::inclusive_scan 是一个并行算法,用于计算前缀和(或前缀操作),并将结果存储在输出迭代器中。它类似于 std::partial_sum,但有一些重要的区别。...与 std::partial_sum 的区别std::partial_sum:计算前缀和,但不包含初始值(如果提供了初始值)。它从范围的第一个元素开始计算累积操作。...std::inclusive_scan:计算前缀和,但始终包含初始值(如果提供了初始值)。它从初始值开始计算累积操作。6. 示例代码以下是一些使用 std::inclusive_scan 的示例代码。...总结std::inclusive_scan 是一个非常强大的算法,适用于需要计算前缀和或前缀操作的场景。它与 std::partial_sum 的主要区别在于是否包含初始值。...通过灵活使用 std::inclusive_scan,可以实现高效的前缀操作计算。

    5500

    OpenCV4,5个方法让你从小白到大佬

    OpenCV4,5个方法让你从小白到大佬 目录 1、简介 2、使用auto关键字,避免过长类型变量声明 3、使用std::vector, 4、学会使用字符串流 5、最后一个是学会使用map容器 关注苏州程序大白...4、学会使用字符串流 std::stringstream是一个非常有用的格式化输出,在OpenCV中如何什么想输出的数据类型从int\float\double\string都可以往里面扔,拼接在一起,最后只要调用一下...str()方法就会全部转换为str,可以输出到图像,文本、控制台上,非常的方便。...特别是通过putText输出到图像上。...5、最后一个是学会使用map容器 这个在OpenCV与OpenVINO中被大量使用,OpenVINO的输入与输出信息格式就是这种map对象,代码演示了map对象的添加与循环fetch元素的方式,演示代码如下

    1.1K10

    C++ LibCurl实现Web隐藏目录扫描

    对于每一行内容,去除行末的换行符,并使用sprintf将根网址与当前行内容拼接,形成完整的URL。 将生成的URL加入std::vector`中。 返回包含所有URL的std::vector。...运行后输出效果如下图所示; 增加默认多线程 首先,我们引入了libcurl库,代码中使用libcurl提供的函数来执行HTTP请求,获取返回状态码,并通过多线程处理多个URL。...使用libcurl进行初始化、设置请求头、执行请求,并最终获取返回的状态码。 ThreadProc 函数:线程执行函数,通过调用GetPageStatus函数获取URL的状态码,并在控制台输出。...main 函数:主函数读取输入的URL列表文件,逐行读取并构造完整的URL。通过CreateThread创建线程,每个线程处理一个URL。同时使用互斥锁确保线程安全。...程序将读取文件中的每个URL,通过libcurl发送HTTP 请求,获取状态码,并输出到控制台。状态码为200的URL将被记录到save.log文件中。

    22810

    CC++开发基础——IO操作与文件流

    一,基础概念 C++的IO操作是基于字节流,并且IO操作与设备无关,同一种IO操作可以在不同类型的设备上使用。...在C++编程中,流的使用步骤如下: 1.实例化一个流对象。 2.将流对象关联到实际的外部设备(键盘,控制台,文件,网络等)。 3.调用流对象中提供的成员函数,完成数据的转换、传输等操作。...流具有缓冲区,大部分时候,往流中写入数据后,流并不会马上把数据输出到指定目的地,为了提高性能,流先用缓冲区将数据存储起来,缓冲区达到一定大小后再输出到指定目的地。...cerr << "Unable to flush to standard out" << endl; } 3.输出流的操作算子 以下算子可以用来格式化输出流: endl:输出一个行结束序列,并刷新缓存...3.代码样例 #include #include #include #include map> using namespace std;

    28130

    6.1 C++ STL 序列映射容器

    ret.second) cout << "insert error" << endl; system("pause"); return 0; } 6.2 正反向遍历映射容器 这段代码演示了如何使用...在插入之后,使用erase函数删除了其中的一个键值对。正向遍历和反向遍历分别使用了map的迭代器和反向迭代器。...代码中演示了如何使用map的find、lower_bound、upper_bound方法来查找指定的键值对,分别返回该元素的迭代器、第一个大于等于该元素的迭代器和第一个大于该元素的迭代器。...STL的map容器存储学生信息的示例程序,其中使用了结构体来存储学生信息。...接着,通过迭代器遍历整个map容器,将每个学生的ID和姓名输出到屏幕上。最后,通过使用map容器的find方法,查找学生ID为1的学生信息,并将其姓名输出到屏幕上。

    20350

    C++ STL 标准模板库(排序集合适配器)算法

    C++ 标准模板库STL,是一个使用模板技术实现的通用程序库,该库由容器container,算法algorithm,迭代器iterator,容器和算法之间通过迭代器进行无缝连接,其中所包含的数据结构都是目前最优解...差集/的使用技巧....iArray1 + 3, iArray2, 0) << endl; // 部分元素求和 int iArray3[5] = { 1, 2, 3, 4, 5 }; int result[5]; partial_sum...iArray3 + 5, result); for_each(iArray3, iArray3 + 5, MyPrint); cout << endl; // 求阶乘 int result1[5]; partial_sum...return 0; } STL 模板适配器与迭代器 输入输出流迭代器是架构在流之上的一种迭代器,如同容器的迭代器与容器的关系一样,对流的数据提供迭代器的操作支持,通过输入输出流的迭代器,你就可以在输入输出流上使用

    65530
    领券