【问题标题】:C++ Compare first and second element for all pairs in containerC ++比较容器中所有对的第一个和第二个元素
【发布时间】:2017-07-16 08:39:17
【问题描述】:

我有这样的一对向量:

std::vector < std::pair < int /*Val1*/, int /*Val2*/ > > myVector;

比较“myVector”中每一对的有效方法是什么?对(Val1 和 Val2)的第一个和第二个元素是否相同。

我能想到的唯一方法是-

bool IsFirstAndSecondSame(vector<pair<T, T>> myVector)
{
    for(auto valuePair : myVector)
    {
       if(valuePair.first != valuePair.second)
           return false'
    }
    return true;
}

虽然在示例中我使用了一对整数,但问题是关于任何具有相同类型的第一个和第二个元素的对。

【问题讨论】:

  • vector&gt; myVector ??? - 你问这个问题的方式无法获得帮助,代码没有任何意义。 C++ 中的cosnt 是什么? ...检查你的拼写。努力去问……你会很快得到答案。发布一个有效的代码 sn-p。请发帖Minimal, Complete, and Verifiable example
  • 使用std::all_of和一个合适的函数。

标签: c++ vector compare similarity std-pair


【解决方案1】:

虽然在示例中我使用了一对整数,但问题是关于任何具有相同类型的第一个和第二个元素的对。

您可能在询问如何使用这样的模板化函数:

template<typename T>
bool IsFirstAndSecondSame(const vector<pair<T, T>>& myVector) // const
                                                              // ^^^^^
                                                              // makes no sense 
                                                              // with free functions
{
    for(const auto& valuePair : myVector)
    {
       if(valuePair.first != valuePair.second)
           return false'
    }
    return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多