MST

星途 面试题库

面试题:C++ set 容器插入冲突场景分析

假设有一个场景,你需要向 set<int> 中插入大量数据,在插入过程中可能存在元素重复的情况。为了提高插入效率并且准确记录成功插入和冲突的次数,你会如何设计代码实现?请阐述你的设计思路并给出关键代码片段。
36.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 设计思路
    • 使用std::set<int>insert成员函数,该函数返回一个std::pair,其中first指向插入的元素(如果插入成功)或已存在的元素,second是一个bool值,true表示插入成功,false表示插入的元素已存在(冲突)。
    • 定义两个计数器,一个用于记录成功插入的次数,另一个用于记录冲突的次数。遍历要插入的数据集合,每次调用insert函数,并根据返回值更新相应的计数器。
  2. 关键代码片段
#include <iostream>
#include <set>

int main() {
    std::set<int> mySet;
    // 假设这是要插入的数据集合
    int data[] = {1, 2, 2, 3, 4, 4, 5};
    int successCount = 0;
    int conflictCount = 0;
    for (int num : data) {
        auto result = mySet.insert(num);
        if (result.second) {
            successCount++;
        } else {
            conflictCount++;
        }
    }
    std::cout << "成功插入次数: " << successCount << std::endl;
    std::cout << "冲突次数: " << conflictCount << std::endl;
    return 0;
}