将Python转换为C++;-lambda指数 我是Python的新手,我正在尝试把一些Python代码转换成C++。
路径是字符串,单词是字符串列表 python snippit:将Python转换为C++;-lambda指数 我是Python的新手,我正在尝试把一些Python代码转换成C++。,python,c++,Python,C++,路径是字符串,单词是字符串列表 python snippit: suggestions = filter(lambda x: x[0] == path[0] and x[-1] == path[-1], WORDS) 因为我对Python一无所知,所以我对0和1的概念有很强的理解。< /强>它们代表这些数组的索引,比如< C> > 和 I-1 < /C> > C++中? 以下是我的转换尝试: vector<string>suggestions; int len = path.
suggestions = filter(lambda x: x[0] == path[0] and x[-1] == path[-1], WORDS)
因为我对Python一无所知,所以我对0和1的概念有很强的理解。< /强>它们代表这些数组的索引,比如< C> > <代码>和<代码> I-1 < /C> > C++中? 以下是我的转换尝试:
vector<string>suggestions;
int len = path.length();
for (string &x : dictionary) //for each word in some dictionary
for (int i = 0; i < len; i++)
{
if (path[i] == x[i] && path[i-1] ==x[i-1])
suggestions.push_back(x);
break;
}
矢量化建议;
int len=path.length();
for(string&x:dictionary)//对于某个字典中的每个单词
对于(int i=0;i
尽管我认为这应该是正确的,但这段代码并没有达到我想要的效果。从Python代码中筛选的列表比C++代码中的向量要短得多。 < P>索引0是第一个元素,而索引1是最后一个元素。如果
foo
包含[4,6,8]
,foo[0]
将是4
,foo[-1]
将是8
对于字符串,它们分别是第一个字符和最后一个字符。因此,在C++11中,
string::front()
和string::back()
,否则,正常情况下使用0和length-1进行访问。索引0是第一个元素,索引-1是最后一个元素。如果foo
包含[4,6,8]
,foo[0]
将是4
,foo[-1]
将是8
对于字符串,它们分别是第一个字符和最后一个字符。因此,在C++11中,string::front()
和string::back()
,否则正常情况下使用0和length-1进行访问
我很难理解0和-1的概念
见[]和[]
负数意味着你从右边而不是左边数数。因此,list[-1]表示最后一个元素,list[-2]表示倒数第二个元素,依此类推
我很难理解0和-1的概念
见[]和[]
负数意味着你从右边而不是左边数数。因此,list[-1]表示最后一个元素,list[-2]表示倒数第二个元素,依此类推
字符串在python中是一个序列,因此您所询问的标记是指特定的字符。索引0在Python中与C++相同。python中的负索引从序列末尾向后计数,因此索引-1是字符串中的最后一个字符
vector<string> suggestions;
int len = path.length();
for (string &x : dictionary) //for each word in some dictionary
if(path[0] == x.front() && path[len-1] == x.back())
suggestions.push_back(x);
向量建议;
int len=path.length();
for(string&x:dictionary)//对于某个字典中的每个单词
if(路径[0]==x.front()&&path[len-1]==x.back())
建议。推回(x);
lambda创建一个函数,该函数接受字符串并检查第一个和最后一个字符。然后,该函数被传递到
过滤器
,过滤器在单词
的每个元素上调用它filter
返回lambda返回true的所有单词的iterable。字符串是python中的序列,因此您要询问的标记是指特定字符。索引0在Python中与C++相同。python中的负索引从序列末尾向后计数,因此索引-1是字符串中的最后一个字符
vector<string> suggestions;
int len = path.length();
for (string &x : dictionary) //for each word in some dictionary
if(path[0] == x.front() && path[len-1] == x.back())
suggestions.push_back(x);
向量建议;
int len=path.length();
for(string&x:dictionary)//对于某个字典中的每个单词
if(路径[0]==x.front()&&path[len-1]==x.back())
建议。推回(x);
lambda创建一个函数,该函数接受字符串并检查第一个和最后一个字符。然后,该函数被传递到
过滤器
,过滤器在单词
的每个元素上调用它filter
返回lambda返回true的所有单词的iterable。lambda函数筛选以与路径相同字母开头和结尾的单词
lambda函数的可能重复项筛选以与路径
可能重复的字母开头和结尾的单词当然,len-1。打败我!非常感谢。我是在做x[x.length()-1]而不是x.back(),虽然您的解决方案看起来非常干净,但是非常感谢。您还可以在路径上使用front
和back
,具体取决于path
的类型。这将使您的代码更加简洁,并且不需要长度变量。是的,len-1。打败我!非常感谢。我是在做x[x.length()-1]而不是x.back(),虽然您的解决方案看起来非常干净,但是非常感谢。您还可以在路径上使用front
和back
,具体取决于path
的类型。这将使您的代码更加简洁,并且您不需要一个长度变量。