将Python转换为C++;-lambda指数 我是Python的新手,我正在尝试把一些Python代码转换成C++。

将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.

路径是字符串,单词是字符串列表

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.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
的类型。这将使您的代码更加简洁,并且您不需要一个长度变量。