C++ 二进制搜索不适用于向量<;字符串>; #包括 #包括 #包括 #包括 使用名称空间std; 内部主(空) { 字符串温度; 矢量加密、解密; int i,n,co=0; cin>>n; 对于(i=0;i>temp; 加密。推回(临时); } 对于(i=0;i>temp; 解密。推回(临时); } 对于(i=0;i
在执行C++ 二进制搜索不适用于向量<;字符串>; #包括 #包括 #包括 #包括 使用名称空间std; 内部主(空) { 字符串温度; 矢量加密、解密; int i,n,co=0; cin>>n; 对于(i=0;i>temp; 加密。推回(临时); } 对于(i=0;i>temp; 解密。推回(临时); } 对于(i=0;i,c++,string,vector,binary-search,C++,String,Vector,Binary Search,在执行二进制搜索之前必须对集合进行排序。是吗?很可能,您的输入没有排序。二进制排序要求您进行排序,您可以使用排序。如果顺序无关紧要,更好的方法可能是使用a和函数,因为字符串没有在向量中排序。请按rst使用。二进制搜索假设向量元素已按从低到高的顺序进行排序。它们是吗?要使其正常工作,必须使用创建的函数来比较字符串 例如,在您的情况下: #include <iostream> #include <string> #include <vector> #include
二进制搜索之前必须对集合进行排序。是吗?很可能,您的输入没有排序。二进制排序
要求您进行排序,您可以使用排序。如果顺序无关紧要,更好的方法可能是使用a和函数,因为字符串没有在向量中排序。请按rst使用。二进制搜索
假设向量元素已按从低到高的顺序进行排序。它们是吗?要使其正常工作,必须使用创建的函数来比较字符串
例如,在您的情况下:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
string temp;
vector<string> encrypt, decrypt;
int i,n, co=0;
cin >> n;
for(i=0;i<n;i++)
{
cin >> temp;
encrypt.push_back(temp);
}
for(i=0;i<n;i++)
{
cin >> temp;
decrypt.push_back(temp);
}
for(i=0;i<n;i++)
{
temp = encrypt[i];
if((binary_search(decrypt.begin(), decrypt.end(), temp)) == true) ++co;
}
cout << co << endl;
return 0;
}
必须以以下方式声明compareFunction
:
if((binary_search(decrypt.begin(), decrypt.end(), **temp.c_str(),compareFunction**)) == true) ++co;
bool比较函数(字符串aux1、字符串aux2)
{
if(strcmp(aux1.c_str(),aux2.c_str())输入是:第一个列表:大家好,他们很丑第二个列表:他们猪青蛙很丑,然后猜测输入未排序的人是正确的。但是如果您将输入作为问题的一部分提供给我们,我们就不必猜测。在问问题时,始终提供尽可能多的信息-我们中的一些人e猜测。请注意,binary\u search
返回项目是否在容器中的结果。要查找项目的位置,请使用lower\u bound
或upper\u bound
+1。请注意,如果只查找一次,则可能应该使用std::find,而不是std::sort和std::binary\u search。
bool compareFunction(string aux1,string aux2)
{
if(strcmp(aux1.c_str(),aux2.c_str()) <0)
{
return true;
}
else
{
return false;
}
}