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

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

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

C++实例

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

#include 
#include 
#include 

struct Experience
{
    int id;
    int x;
    int y;
    int th;
};

int main() {

    std::cout << "Start ......" << std::endl;

    std::vector 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:" <2].id<< ",exps[2].x:" <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:" <2].id<< ",exps[2].x:" <2].x<< std::endl;

    std::cout << "Done ......" << std::endl;
    return 0;
}

运行结果

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

解释

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

你可能感兴趣的:(Software,Ubuntu)