Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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++;使用find_if查找值_C++_Lambda_Stl - Fatal编程技术网

C++ C++;使用find_if查找值

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

我试图找出一个字符串单词是否包含任何指令形式机器操作表,一个成对字符串int的向量

find_if中的lambda函数应该是什么样的? 如果您有任何其他方法,请让我知道

现在,我的代码看起来像

# 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()
相关的错误:)

使用谓词(真值函数)并返回迭代器。接受一个谓词——一个真值函数——并返回一个迭代器。非常感谢!非常感谢你!