C++ vector 查找结构体向量变量(Vectors, structs and find)

来源:互联网 发布:阿里数据分析平台 编辑:程序博客网 时间:2024/06/05 09:23

如果建立了结构体向量,如何查找结构体向量中某变量值所在的向量单元。简单地说,就是结构体向量中有ID和数值,如果根据查找ID来更改数值呢?

利用迭代器,根据ID的值找到迭代器的位置,然后利用迭代器索引修改数值。

C++实例

代码下载地址:
查找结构体向量变量(Vectors, structs and find)

#include <iostream>#include <algorithm>#include <boost/bind.hpp>struct Experience{    int id;    int x;    int y;    int th;};int main() {    std::cout << "Start ......" << std::endl;    std::vector<Experience> exps;    Experience exp;    exp.id    = 1;    exp.x     = 10;    exps.push_back ( exp );    exp.id    = 2;    exp.x     = 20;    exps.push_back ( exp );    exp.id    = 3;    exp.x     = 30;    exps.push_back ( exp );    int exp_id = 3;    std::cout << "exps[2].id:" <<exps[2].id<< ",exps[2].x:" <<exps[2].x<< std::endl;    std::vector< Experience >::iterator it =            std::find_if ( exps.begin (), exps.end (),boost::bind ( &Experience::id, _1 ) == exp_id );    std::cout << "exps[2].id:" <<exps[2].id<< ",exps[2].x:" <<exps[2].x<< std::endl;    std::cout << "Done ......" << std::endl;    return 0;}

运行结果

Start ......exps[2].id:3,exps[2].x:30Modify exps.x = 0, if exps.id == 3exps[2].id:3,exps[2].x:0Done ......

解释

建了三个结构体,然后将其推入到向量中,查看向量id=3的x的值30。利用迭代器查找”id==3”的结构体,然后利用迭代器将其置零。

1 0