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;
//...