带有数组长度的C ++二进制搜索问题

时间:2018-01-22 21:39:25

标签: c++ arrays string visual-studio binary-search

以下代码因某些原因输入" b"或任何事情(考虑已经排序)不给出输出" GOTCHA \ n"但是,如果我使用矢量,它工作正常!似乎你调试它的字符串大小x-> length() - 1;不给出数组的长度而是给出0作为最大长度的解决方案?

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
string x[] = { "a", "b", "c", "d" };
string s;
cin >> s;
int max = x->size()-1;
int min = 0;
int middle = (max + min) / 2;
while (min <= max) //BinarySearch Begins
{
    middle = (max + min) / 2;
    if (s == x[middle]) //if found display message
    {
        cout << "GOTCHA\n";
        break;
    }
    else if (s > x[middle])//if actual string is after first guess increase
        min = middle + 1;
    else max = middle - 1; //else decrease
 }
 system("pause");
 return 0;
}

2 个答案:

答案 0 :(得分:0)

在下面的代码中,'x'是一个C风格的数组,你应该使用sizeof(x)来返回它的大小。 x-&gt; length()或x-&gt; size()不正确。

   int max = x->size()-1;

答案 1 :(得分:0)

你需要这样的东西

int max = sizeof(x)/sizeof(x[0]) - 1;

希望这有帮助!