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;
  }
}