在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中找到所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)