在c++中使用擦除-删除习语时,我应该通过引用传递吗?
Should I pass by reference when using the erase-remove idiom in c++?
在c++中使用擦除-删除习语时,我应该通过引用传递吗?
例如:void Country::clean()
{
cities.erase( std::remove_if(
cities.begin(),
cities.end(),
[](City city) -> bool { return city.getNumberOfBuildings() == 0; }
),
cities.end()
);
}
也许最好将lambda函数行改为:
[](City &city) -> bool { return city.getNumberOfBuildings() == 0; }
和pass city by reference?
谢谢
创建副本没有任何好处,因此您可能应该传递引用。但是你应该做的是使用const
引用:
[](const City &city) -> bool { return city.getNumberOfBuildings() == 0; }
注意,在这种情况下,您不必指定返回类型。
相关文章:
- 使用unique_ptr并返回引用,或者我应该使用shared_ptr并在需要时制作副本
- 我应该通过常量引用还是模板函数中的值传递?
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 我应该返回引用堆对象还是返回值
- 我应该如何确保对移动构造函数的调用?(移动语义和右值引用)
- 在更改文件描述符 1 以引用其他文件后,我应该如何管理 ::std::cout?
- 我应该返回一个右值引用(通过 std::move'ing)吗?
- C++ - 我应该制作“运算符+”常量吗?它是否返回引用
- 我应该为赋值运算符使用左值引用限定符吗
- 我应该将引用存储在c++中的类中吗
- 我应该使用什么函数签名来返回对可能不存在的对象的引用
- 我应该通过值传递std::函数还是通过(rvvalue)-引用传递函数
- C++ LP64 中通过引用更改我的指针值传递.我应该看什么
- 我应该何时使用引用
- 我应该删除一个取消引用的指针数组吗?
- 我应该通过const引用传递std::函数吗
- 如果指针是函数自变量并且通过引用传递值,我应该删除它吗
- 我应该通过引用、值或ptr来存储一个完全封装的成员吗
- 为什么我应该返回引用
- 在c++中使用擦除-删除习语时,我应该通过引用传递吗?