Jea*_*ier 14 lambda indentation c++11
是否有一种可接受的"标准"方法来格式化C++> = 11中的lambda表达式?特别是当放入通用算法时.
例如 :
1)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{ return e.id() == id;});
Run Code Online (Sandbox Code Playgroud)
或者2)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42]
(const Element& e)
{ return e.id() == id;});
Run Code Online (Sandbox Code Playgroud)
或者3)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{
return e.id() == id;
});
Run Code Online (Sandbox Code Playgroud)
或者4)
auto it = std::find_if(myVec.begin(),
myVec.end(),
[id = 42] (const Element& e)
{
return e.id() == id;
});
Run Code Online (Sandbox Code Playgroud)
或者回车,空格,制表符的任何其他组合......注意:我在我的代码中使用Allman样式,所以理想情况下它将"适合相同的样式".
Iro*_*ior 11
我总是倾向于使用自己的语义值赋予缩进的相对级别,并将结束分隔符与包含其匹配的开始分隔符的行垂直对齐.这使得复杂语句(如使用lambda表达式作为参数的语句)更容易阅读:
auto it = std::find_if(
myVec.begin(),
myVec.end(),
[id = 42] (const Element& e){ return e.id() == id;}
);
Run Code Online (Sandbox Code Playgroud)
或者(例如,如果λ体对于一条线来说太长)
auto it = std::find_if(
myVec.begin(),
myVec.end(),
[id = 42] (const Element& e){
return e.id() == id;
}
);
Run Code Online (Sandbox Code Playgroud)
目前还没有法律上的标准方式.但是,您可以轻松采用自己喜欢的C++风格.例如,一个即兴的奥曼风格:
std::for_each(
m_pages[i].begin() + m_pageSize,
m_pages[i].end(),
[this, i, &insertPlace](const CItemRef& item)
{
if(!item->IsOK())
{
insertPlace = m_pages[i+1].insert(insertPlace, item);
}
}
);
Run Code Online (Sandbox Code Playgroud)
这是你的号码(3).数字(2)可用于单线.
在我的拙见中,(1)和(4)打破了缩进的精神(他们没有强调整个lambda块的逻辑结构).我不会用它们.
| 归档时间: |
|
| 查看次数: |
2937 次 |
| 最近记录: |