MST

星途 面试题库

面试题:C++ 中 set 容器插入元素冲突处理基础

在 C++ 的 STL set 容器中,当尝试插入一个已经存在的元素时会发生什么?请编写一段代码示例,展示这种情况,并说明如何通过返回值判断插入是否成功。
50.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 插入已存在元素的情况
    • 在C++ 的STL set容器中,set容器的特性是每个元素的值必须是唯一的。当尝试插入一个已经存在的元素时,该插入操作会被忽略,set的大小不会改变,也不会产生任何错误或异常。
  2. 代码示例
#include <iostream>
#include <set>

int main() {
    std::set<int> mySet;
    mySet.insert(10);

    // 尝试插入已存在的元素10
    auto result = mySet.insert(10);

    if (result.second) {
        std::cout << "元素插入成功。" << std::endl;
    } else {
        std::cout << "元素已存在,插入失败。" << std::endl;
    }

    return 0;
}
  1. 通过返回值判断插入是否成功
    • setinsert成员函数返回一个std::pair,其中first是一个指向已插入元素(或已存在元素)的迭代器,second是一个bool值。如果插入成功,secondtrue;如果插入的元素已存在,secondfalse。在上述代码中,result.second用于判断插入操作是否成功。