当前位置:  开发笔记 > 编程语言 > 正文

C++是否具有顺序搜索功能?

如何解决《C++是否具有顺序搜索功能?》经验,为你挑选了3个好方法。

我有一个小的未排序数组,我想找到特定值的索引.C++是否具有内置的顺序搜索功能,或者您是否只是在每次出现时自己编写循环?

我特意使用C风格的数组,如:

std::string arr[5] = { "EVEN", "ODD", "NONE", "MARK", "SPACE" };

我需要用户提供的值的索引.



1> Patrick Glan..:

使用std::find()STL- algorithm -library,或find()特定容器的-method.



2> Michael Burr..:

std::find() 应该管用:

#include 
#include 
#include 

using std::string;

std::string arr[5] = { "EVEN", "ODD", "NONE", "MARK", "SPACE" };


int main() {

    string* pArrEnd = arr + sizeof( arr)/sizeof(arr[0]);

    string* pFound = std::find( arr, pArrEnd, "MARK");

    if (pFound == pArrEnd) {
        printf( "not found\n");
    }
    else {
        printf( "%s was found at index %d\n", pFound->c_str(), pFound - arr);
        printf( "or using STL: %d\n", std::distance( arr, pFound));
    }

    return 0;
}



3> John Dibling..:

您可以在STL容器以外的容器上使用STL算法.例如,你可以在C风格的数组中使用std :: find():

// alloc the array
static const size_t numItems = 100000;
int * items = new int[numItems];

// fill the array
for( size_t n = 0; n < numItems; ++n )
    items[n] = n;

// find 42 using std::find()
int* found = std::find(&items[0], &items[numItems], 42);
if( found == &items[numItems] )
{
    // this is one past the end, so 42 was not found
    items[0] = 42;
}
else
{
    // we found the first instance of 42 at this location
    // change it to 43
    *found = 43;
}

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有