Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何检查向量对中是否存在给定的输入?_C++_String_Algorithm_Vector_Std Pair - Fatal编程技术网

C++ C++;如何检查向量对中是否存在给定的输入?

C++ C++;如何检查向量对中是否存在给定的输入?,c++,string,algorithm,vector,std-pair,C++,String,Algorithm,Vector,Std Pair,有一个简单的电话簿,内容以矢量形式给出。程序应要求用户输入名称,如果存在,则显示数字,否则发出警告。它应该把电话簿放在出口处。迭代器部分出现错误。我怎样才能解决这个问题 我为此创建了一个迭代器:vector>::迭代器但是我得到了错误:二进制表达式的操作数无效('std::\uu 1::pair'和'const std::\uu 1::basic\u string') intmain() { //电话簿 向量> vec{make_pair(“荷马”,“1111”), 配对(“玛姬”、“2222”

有一个简单的电话簿,内容以矢量形式给出。程序应要求用户输入名称,如果存在,则显示数字,否则发出警告。它应该把电话簿放在出口处。迭代器部分出现错误。我怎样才能解决这个问题

我为此创建了一个迭代器:
vector>::迭代器但是我得到了错误:
二进制表达式的操作数无效('std::\uu 1::pair'和'const std::\uu 1::basic\u string')

intmain()
{
//电话簿
向量>
vec{make_pair(“荷马”,“1111”),
配对(“玛姬”、“2222”),
配对(“丽莎”,“3333”),
制作一对(“玛吉”,“4444”),
制作配对(“Bart”、“5555”);
std::输入的字符串名称;
vector>::iterator it;//创建迭代器
//除非进入出口;
while(输入名称!=“退出”){
//从用户处获取输入
无法输入名称;
it=std::find(vec.begin(),vec.end(),name输入);
//如果存在给定的输入,则返回相应的电话号码
如果(it!=vec.end()){
std::不能改用

it = std::find_if( vec.begin(), vec.end(), 
                   [&nameEntered]( const auto &p ) { return p.first == nameEntered; } );
否则,您将尝试将类型为
std::pair
的对象与类型为
std::string
的对象进行比较,如错误消息所示

注意回路的状况不好

while(nameEntered != "Exit"){

        //take input from user
        cout<<"Enter name (or Exit ): ";
        std::cin >> nameEntered; 
        //...
while(输入名称!=“退出”){
//从用户处获取输入
无法输入名称;
//...

因为它将在算法调用中使用字符串
“Exit”

使用映射。它是为这样的情况创建的。使用映射很容易。它说“错误:'auto'不允许在lambda参数中”@L.F.我同意。但这并不能解释错误。@excalibur26将其更改为const std::pair&p。
while(nameEntered != "Exit"){

        //take input from user
        cout<<"Enter name (or Exit ): ";
        std::cin >> nameEntered; 
        //...