计算矢量中的元素属性
Counting element properties in a vector
我有一个对象向量,我想计算其中有多少包含某个属性。
我确信STL可以做到这一点,但我找不到一个例子。当然,我可以使用循环来计算自己,但我需要这样做很多次,我更喜欢简洁的方法。
我想做一些类似下面的伪代码的事情
class MyObj {
public:
std::string name;
}
std::vector<MyObj> objects
int calledJohn = count(objects,this->name,"jonn")
如果您想计算有多少对象具有某个属性,std::count_if
是最好的选择。std::count_if
需要一个范围来迭代,以及将确定对象是否具有值的函子对象:
auto calledJohn = std::count_if(std::begin(objects), std::end(objects),
[] (const MyObj& obj) { return obj.name == "John"; });
使用std::count_if
auto n = std::count_if(objects.begin(), objects.end(),
[](const MyObj& o) { return o.name == "jonn";});
算法头中有一个函数std::count_if
正是为您做这件事的。您必须提供一个迭代器范围(在您的情况下是objects.begin
和objects.end
)和一个谓词,该谓词可以是lambda函数或任何其他可调用对象:
auto number = std::count_if(objects.begin(), objects.end(), [](const MyObj &object){if(/*your condition*/){return true;}});
相关文章:
- 我有一个嵌套数组,它由另一个数组中的元素组成,这些元素分组为2.之后,我想显示每个元素的属性
- 如何使用 boost 属性树来解析 boost 中 json 字符串中的数组中的元素?
- 我创建了deque<CObject*>并添加了不同类型的元素。如何更改此元素的属性?
- 使用提升属性树检查 xml 文件中是否存在元素
- 使用 CDT 从头文件中获取属性定义的节点元素是什么
- 对大于属性的元素的矢量对象进行二进制搜索
- 迭代向量中属性具有特定值的元素范围
- 提升属性树获取第一个元素
- 计算矢量中的元素属性
- 根据属性值在结构向量中擦除元素
- 我可以为我的自定义Qt UI元素定义自定义CSS/QSS属性吗?
- 多属性排序是反转元素
- CodeSynthesis XSD CXX 不解析 XML 文件,表示未声明属性/元素
- 访问vector元素属性的最佳方法
- Boost属性树,迭代器插入元素
- 在vector的最后一个元素中插入属性
- 根据元素的属性从列表中选择元素
- 在 c++ 中,当模板化向量是另一个向量的元素时,访问该向量的属性
- c ++如何在向量中的特定位置显示元素的字符串属性
- 在Qt 5.0中将QAbstractListModel元素属性暴露给QML