【问题标题】:C++ How to find pair of 3 integers in vector< pair<int, pair<int, int> > >C++如何在vector< pair<int, pair<int, int>中找到一对3整数
【发布时间】:2020-09-06 01:12:47
【问题描述】:

例如,我同时存储 3 个元素,例如:

vector&lt; pair&lt;int, pair&lt;int, int&gt; &gt; &gt; myvec; myvec.push_back(make_pair(1, make_pair(2, 3))); 如何检查 myvec 中是否存在(成对){1,2,3}?

【问题讨论】:

  • 你能用std::tuple&lt;int, int, int&gt;代替吗?
  • 究竟是什么意思“存在(作为一对)”? {1, 2, 3} 不是 pair 而是三个值的元组,对吧?介意elaborate你到底想实现什么?
  • Jessie 可能是 C++ 新手,伙计们。 Jessie 不知道这个符号。所以使用 {} 而不是 。让我们善良。我们可以看到 Jessie 正在谈论pair&lt;int, pair&lt;int, int&gt;&gt;。为什么你们都假设 {1,2,3} 是一个元组?它也可以是一个向量。 Jessie 是一个新的贡献者。没关系。请删除对以下两个答案的反对票。
  • @Shridhar 这就是我们在 cmets 中询问 Jessie 的原因。因为问题是不清楚的,在它变得更清楚之前不应该回答。做到这一点是杰西的工作。只有他们自己知道。

标签: c++ vector find


【解决方案1】:

您可以从algorithm 使用find()

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    
    vector< pair<int, pair<int, int> > > myvec;  
    auto p = make_pair(1, make_pair(2, 3));
    myvec.push_back(p);
    
    if ( std::find(myvec.begin(), myvec.end(), p) != myvec.end() )
        cout << "Found";
    else
        cout << "Not Found";
    return 0;
}

【讨论】:

  • 编辑问题以更好地匹配您的答案是不恰当的,如果不是滥用的话。
  • @πάνταῥεῖ 嘿,我也可以给出在向量中搜索元组的答案。这不是要编辑问题以匹配我们的答案。我们需要了解贡献者对 C++ 来说是新的并且可能也是新的。我们需要有足够的同情心来理解 OP 在说什么。我们可以很好的看到pair&lt;int, pair&lt;int,int&gt;&gt;正在被使用,需要搜索。
【解决方案2】:

当然,你可以这样做:

 for (auto mval: myvec) {
   if (mval.first == 1 && mval.second.first == 2 && mval.second.second == 3)
     cout << "Found" << endl;
 }

或者这个:

typedef pair<int,int> IntPair;
typedef pair<int, IntPair> MyPair;
 
...
for (auto mval: myvec) {
   if (mval == MyPair(1, IntPair(2, 3)))
     cout << "Found" << endl;
 }

或其他几种方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多