【问题标题】:Linear Search of a Const Char* arrayConst Char* 数组的线性搜索
【发布时间】:2022-01-11 04:28:51
【问题描述】:

我正在尝试对我拥有的 const char* 字符串数组进行线性搜索,并且有一段时间了解这里出了什么问题。

数组位于 .h 文件中,如下所示:

#pragma once
#include <iostream>
#include <string>
using namespace std;


const char* names[] = { "rodger", "michael", "tina", "jose", "chris", "andrew" };

我用于线性搜索的代码如下所示:

int linear_search(int array[], int size, int value) {
    
    
    for (int i = 0; i < size; i++) {
        if (value == names[i]) {
            return i;
        }
    }

}

编译器给我一个错误,我无法比较 int 类型和 const char 类型,但是如果我的数组是字符串,我该怎么做呢?不只是整数?

【问题讨论】:

  • 您将一个 int value 与一个 char * 名称进行比较。

标签: c++ sorting


【解决方案1】:

您似乎正在尝试搜索给定值。由于您的数组是 char* 的 n 数组,因此您需要使用 strcmp 将两个 char* 一起比较。

https://www.cplusplus.com/reference/cstring/strcmp/

附带说明,您使用的是 c++,因此使用 std::string 比使用 char* 更有意义

【讨论】:

  • 我已经将数组切换到std::string,我还需要使用strcmp吗?
【解决方案2】:

您必须使您的搜索例程适应 char 数组:

int linear_search( const char* array[], int size, const char* value) {
    for (int i = 0; i < size; i++) {
        if ( ::strcmp( value, array[i] ) == 0 ) {
            return i;
        }
    }
    // Need to flag invalid or not found
    return -1; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 2016-03-17
    • 2021-12-14
    • 2018-05-23
    • 1970-01-01
    • 2022-12-18
    相关资源
    最近更新 更多