使用std::find_if提取序列容器的子串
一个需求是这样的,一个vector容器中,我需要提取满足一定条件的元素的序列。就比如,一个树形结构,我把该接口拍扁成vector容器,每个节点都有一个惟一ID。
以下就是根据特定的ID查找节点下的子节点:
NodeList OrgTreeParser::findChildsById(const std::string &id)
{
NodeList list; auto iter = std::find_if(std::begin(m_list), std::end(m_list),
[&](const OrgTreeNode & item) -> bool {
return item.parent_id.compare(id) == ;
}
);
while (iter != m_list.end())
{
OrgTreeNode node;
node.id = iter->id;
node.parent_id = iter->parent_id;
node.level_id = iter->level_id;
node.name = iter->name;
node.addr = iter->addr;
node.description = iter->description;
list.push_back(node); iter = std::find_if(std::next(iter), std::end(m_list),
[&](const OrgTreeNode & item) -> bool {
return item.parent_id.compare(id) == ;
}
);
} return list;
}
references:
https://stackoverflow.com/questions/33226202/what-is-the-best-way-to-convert-a-stdfind-if-on-a-vector-to-a-loop
使用std::find_if提取序列容器的子串的更多相关文章
- string基本字符序列容器(竞赛时常用的使用方法总结)
C语言只提供了一个char类型用来处理字符,而对于字符串,只能通过字符串数组来处理,而C++STL提供了string基本字符序列容器来处理字符串,可以将其理解为字符串类,它提供了添加,删除,替换.查找 ...
- STL的std::find和std::find_if
std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...
- C++线性序列容器<vector>简单总结
C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...
- c++ stl algorithm: std::find, std::find_if
std::find: 查找容器元素, find仅仅能查找容器元素为<基本数据类型> [cpp] view plaincopy #include <iostream> #incl ...
- STL 序列容器
转自时习之 STL中大家最耳熟能详的可能就是容器,容器大致可以分为两类,序列型容器(SequenceContainer)和关联型容器(AssociativeContainer)这里介绍STL中的各种序 ...
- STL常用序列容器
这里简要的记述一下STL常用容器的实现原理,要点等内容. vector vector是比较常用的stl容器,用法与数组是非类似,其内部实现是连续空间分配,与数组的不同之处在于可弹性增加空间,而arra ...
- std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义 这个容器保存了所有客户端连接的channel Channel2* Li ...
- SSIS - 6.序列容器和优先约束
一.多样的优先约束(看例子) 1)打开一个空白的SSIS包,拖拽4个脚本任务到设计面板上,重命名后连接起来,如下图所示. 2)执行包,可以看到任务执行成功.之后我们改变C和D之间的优先约束为“失败”. ...
- SSIS之序列容器
序列容器是一种十分简单,但使用非常广泛的容器,它可以对控制流的任务流组件进行结构化处理,把一些业务相关的任务组件,放到一个序列容器中,使整个包看起来更加整洁.美观,就如同我们家里的书柜.衣柜似的,把不 ...
随机推荐
- c#中的 数组
数组即是一组相同类型组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素. 数组是具有相同类型的一组数据.当访问数组中的数据时,可以通过下标来指明.c#中数组元素可以为任何数据类型,数 ...
- Add Binary Leetcode java
题目: Given two binary strings, return their sum (also a binary string). For example, a = "11&quo ...
- 解决使用Properties读取中文乱码问题
web服务返回的是多行以key和value对应的键值对,且编码为utf-8.我的项目使用的编码也是utf-8,但是我用Properties读取中文的时候,打印出来的总是乱码. 后来网上查了一下,得到如 ...
- css3中webkit内核的滚动栏样式
项目其中用到的滚动栏样式,在别人的基础上调成适合自己的样式.(IE能够调试滚动栏样式,firefox眼下不能调试) ::-webkit-scrollbar { width: 14px; }/* Tra ...
- 用keras实现lstm 利用Keras下的LSTM进行情感分析
1 I either LOVE Brokeback Mountain or think it’s great that homosexuality is becoming more accept ...
- w3cscholl的在线代码编辑工具2
https://www.w3cschool.cn/tryrun/runcode?lang=c
- Hdfs dfs命令使用
如果是把数据放在了hdfs系统,那么我们如何访问他们呢? 1.hdfs查看文件夹 ./hdfs dfs -ls hdfs://mycluster/output/online/ 2.hdfs创建目录df ...
- Visual Studio 开始支持编写 Android 程序并自带 Android 模拟器【转载】
原文地址 本文内容 为什么需要一个 Android 模拟器 针对 Visual Studio Android 模拟器的调试 Visual Studio Android 模拟器的传感器模拟和其他功能 A ...
- angular5中使用jsonp请求页面
说多了,都是眼泪,折腾了很久,各种百度,查到的例子,全都报错,可能是因为我的angular的版本太高,向下都不兼容? 我的angular版本为最新的5.2.11: 下面是正确的jsonp请求的方法 1 ...
- 解决Jquery向页面append新元素之后事件的绑定问题
/*经过用户技能标签增加样式*/ $(".s-edited").live("hover",function(){ $(this).toggleClass(&qu ...