将 Python 转换为 C++ - lambda 中的索引
Converting Python to C++ - index in lambda
我是python的新手,我正在尝试将一些python代码转换为C++。
path 是一个字符串,WORDS 是一个字符串列表。
Python snippit:
suggestions = filter(lambda x: x[0] == path[0] and x[-1] == path[-1], WORDS)
因为我根本不了解 python,所以我很难理解 0 和 -1 的概念。它们是否表示这些数组的索引,就像i
和i-1
在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;
}
尽管我认为它应该是正确的,但这段代码并没有做我想要它做的事情。来自 python 代码的过滤列表比来自C++代码的向量短得多。
字符串是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);
lambda 创建一个函数,该函数接受字符串并检查第一个和最后一个字符。然后该函数被传递到filter
,WORDS
的每个元素上调用它。 filter
返回 lambda 返回 true 的所有单词的迭代对象。
请参阅 [Python我很难理解 0 和 -1 的概念。
列表的负索引] 和 [解释 Python 的切片表示法]。
负数表示您从右边而不是左边计数。因此,list[-1] 是指最后一个元素,list[-2] 是倒数第二个元素,依此类推。
索引 0 是第一个元素,索引 -1 是最后一个元素。如果foo
包含[4, 6, 8]
,foo[0]
将被4
,foo[-1]
将是8
。
对于字符串,它们分别是第一个和最后一个字符。因此,string::front()
和 string::back()
C++11,否则正常使用 0 和长度 1 访问。
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 可组合的lambda/std::函数与std::可选
- 查找最接近的大于当前数字的数字的索引
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 在C++中调整向量中的索引
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 如何将lambda作为模板类的成员函数参数
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 在 lambda 捕获中声明的变量的类型推导
- 我可以将调用类的"this"传递给 lambda 函数吗?
- C++11 使用 lambda 排序向量来跟踪索引
- 将 Python 转换为 C++ - lambda 中的索引
- C++对不带lambda的索引向量进行排序
- 使用lambda填充向量以确定索引是偶数还是奇数