c++ - 在 vector<vector<string>> 中查找一个元素

标签 c++

我将此文件存储在 vector<vector<string>> 中:

   1 a aa  # vector of string stored to `vector<vector<string>>`
   2 b bb
   3 c cc  # c -> index == 2
   4 d dd

C++代码:

vector<vector<string>> myvect = 
    {{"1","a","aa"},
    {"2","b","bb"},
    {"3","c","cc"},
    {"4","d","dd"}};

如何搜索 c在第二列中并获取其索引(我知道它在第二个 vector 中)- 输出应为 2。

我想使用 findfind_if功能。

最佳答案

如果您特别想搜索内部 vector 的第 2 列,您可以使用 transform_iterator 和常规 find

transform_iteratorboost 中看起来像这样:

std::vector< std::vector< std::string > > v;
auto lambda = [] ( std::vector< std::string > const& v ) { return v[1]; };

auto transform_end = boost::make_transform_iterator ( v.end() ); 
return std::find( boost::make_transform_iterator( v.begin(), lambda ), 
          transform_end, "c" ) != transform_end;

如果您的内部 lambda 是在任何位置找到 "c",我不会在这里使用转换迭代器,因为我们想在每个内部 vector 上返回 true/false,而不仅仅是一些转换后的值, 我们将在外部 vector 上使用 find_if 并在内部 vector 上找到

std::string val = "c";
auto lambda = [ const & ]( std::vector< std::string > const& vInner )
       { return std::find( vInner.begin(), vInner.end(), val ) != v.end(); } ;

return std::find_if( v.begin(), v.end(), lambda );

关于c++ - 在 vector<vector<string>> 中查找一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684085/

相关文章:

c++ - 在 C++ 中读取和写入同一个二进制文件

c++ - 从 HBITMAP 转换为 IWICBitmap

c++ - std::move 与 std::forward

C++ OpenCV : tracking moving people on the street

c++ - 能够访问类定义之外的私有(private)对象成员

c++ - 对象与实例的区别 : C++

c++ - OpenCV 改变亮度和对比度

c++ - 共享指针取消引用错误

c# - 在 C# 代码中使用 .dll 方法从文件加载数据

c++ - 使用给出错误结果的全局变量编程