以下代码因某些原因输入" 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;
}
答案 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;
希望这有帮助!