C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 在std :: vector中找到大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一对矢量.该对中的第一个类型为std :: String,第二个类型为Container.

在std或boost中存在什么方便功能,以便我可以返回一个给定字符串值的容器作为键?

updatE

有人评论说,我可以使用std :: map,但实际上我需要按照我把它们推送到向量的顺序来保存我的项目的顺序.

解决方法

一个可能的解决方案:
struct comp
{
    comp(std::string const& s) : _s(s) { }

    bool operator () (std::pair<std::string,Container> const& p)
    {
        return (p.first == _s);
    }

    std::string _s;
};

// ...

typedef std::vector<std::pair<std::string,Container> > my_vector;
my_vector v;

// ...

my_vector::iterator i = std::find_if(v.begin(),v.end(),comp("World"));
if (i != v.end())
{
    Container& c = i->second;
}

// ...

这是一个完整的例子:

#include <vector>
#include <utility>
#include <String>
#include <algorithm>

struct Container
{
    Container(int C) : _c(C) { }
    int _c;
};

struct comp
{
    comp(std::string const& s) : _s(s) { }

    bool operator () (std::pair<std::string,Container> const& p)
    {
        return (p.first == _s);
    }

    std::string _s;
};

#include <iostream>

int main()
{
    typedef std::vector<std::pair<std::string,Container> > my_vector;
    my_vector v;
    v.push_BACk(std::make_pair("Hello",Container(42)));
    v.push_BACk(std::make_pair("World",Container(1729)));
    my_vector::iterator i = std::find_if(v.begin(),comp("World"));
    if (i != v.end())
    {
        Container& c = i->second;
        std::cout << c._c; // <== Prints 1729
    }
}

这里是live example.

大佬总结

以上是大佬教程为你收集整理的c – 在std :: vector中找到全部内容,希望文章能够帮你解决c – 在std :: vector中找到所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。