C++ C++;使用find_if查找值
我试图找出一个字符串单词是否包含任何指令形式机器操作表,一个成对字符串int的向量 find_if中的lambda函数应该是什么样的? 如果您有任何其他方法,请让我知道 现在,我的代码看起来像C++ C++;使用find_if查找值,c++,lambda,stl,C++,Lambda,Stl,我试图找出一个字符串单词是否包含任何指令形式机器操作表,一个成对字符串int的向量 find_if中的lambda函数应该是什么样的? 如果您有任何其他方法,请让我知道 现在,我的代码看起来像 # define RX 4 # define RR 2 ... vector < pair <string, int> > machine_opTable = { {"L", RX},
# define RX 4
# define RR 2
...
vector < pair <string, int> > machine_opTable = { {"L", RX},
{ "A", RX},
{"ST", RX}
};
words = " L 1, SMB1";
string inMachineop;
for ( auto instruction: words){
inMachineop = find_if ( begin(machine_opTable), end(machine_opTable), [] (const pair<string,int>& p) { return ( p.first == instruction ? p.first : "NOTFOUND"); });
}
#定义RX 4
#定义RR 2
...
向量machine_opTable={{“L”,RX},
{“A”,RX},
{“ST”,RX}
};
words=“l1,SMB1”;
机器中的字符串;
for(自动指令:字){
inMachineop=find_if(begin(machine_opTable),end(machine_opTable),[](const pair&p){return(p.first==指令?p.first:“NOTFOUND”);};
}
我很想返回指向这一对的迭代器。。。请告诉我是怎么做的
谢谢。从
返回值,如果根据参考找到
范围内第一个元素的迭代器,pred
不会返回false
pred
是您的lambda,它必须返回布尔值。
如果要在lambda中使用指令
,则必须捕获此变量
[instruction] (const pair<string,int>& p) { return p.first == instruction; }
如果
根据引用的值为,则从find_返回值
范围内第一个元素的迭代器,pred
不会返回false
pred
是您的lambda,它必须返回布尔值。
如果要在lambda中使用指令
,则必须捕获此变量
[instruction] (const pair<string,int>& p) { return p.first == instruction; }
我在这里看到一个bug:
for ( auto instruction: words){
在这里,您可以按字符进行迭代,而不是按单词。你需要先按空格分开。尝试将此代码用于该任务
与find_if()
相关的bug由其他人解释:)我在这里看到了一个bug:
for ( auto instruction: words){
在这里,您可以按字符进行迭代,而不是按单词。你需要先按空格分开。尝试将此代码用于该任务
其他人解释了与find_if()
相关的错误:)使用谓词(真值函数)并返回迭代器。接受一个谓词——一个真值函数——并返回一个迭代器。非常感谢!非常感谢你!