C++中各种哈希结构(如int[],string,set,map)的find方法的理解与差异

在 C++ 中,不同的数据结构(如 int[]stringsetmap)的 find 方法或查找方式各有不同。下面是它们的具体实现方式和差异:


1. 数组(int[]std::vector<int>

实现方式:

  • 普通数组(C 风格) 没有 find 方法,需要用 for 循环或者 std::find 来查找。
  • std::vector<int> 可以使用 std::find,输入参数前两个为迭代器,表示查找范围的起始和结束,第三个参数为值,返回值为指向该值对应元素的迭代器。

示例:

#include <iostream>
#include <vector>
#include <algorithm> // std::find

int main() {
   
   
    std::vector<int> arr = {
   
   1, 2, 3, 4, 5};
    
    auto it = std::find(arr.begin(), arr.end(), 3);  // 查找3
    if (it != arr.end()) {
   
   
        std::cout << "Found: " << *it << std::endl;
    } else {
   
   
        std::cout << "Not found" << std::endl;
    }
    return 0;
}

特点

  • 时间复杂度:O(n),因为 std::find 线性搜索。
  • 适用范围:适用于小规模数组或顺序存储的数据。

2. 字符串(std::string

实现方式:

  • 使用 find 方法 查找子串的位置。
  • 返回值:找到时返回索引,找不到返回 std::string::npos

示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值