在C 中,对Pair类STL的用途是什么,就像数据类型或容器一样



我基本上想知道我们可以在哪个领域使用Pair stl,我们如何迭代对stl。这是我试图通过一对迭代的简短代码,但这是错误的。

int main()
{
    pair<int,int>a;
    a=make_pair(1,22);
    a=make_pair(2,33);
    a=make_pair(3,44);
    for(pair<int,int>::iterator i:a)
    {
        cout<<a.first<<"-->";
        cout<<a.second;
        cout<<endl;
    }
}

任何时候都有键/值关系的数据,如果还需要密钥,一对就可能会派上用场。

一对只能存储两个元素,因此您尝试存储三对的尝试无法正常工作。每个新对将替换旧对。如果您需要多个对,请为您想要的一对类型添加一个容器。示例:

#include <iostream>
#include <tuple>
#include <vector>
int main() {
    std::vector<std::pair<int, int>> a;
    a.emplace_back(1, 22);
    a.emplace_back(2, 33);
    a.emplace_back(3, 44);
    for(auto [First, Second] : a) {
        std::cout << First 
                  << "-->"
                  << Second
                  << "n";
    }
}

我们如何迭代成对

你不能。如果您需要将这些值传递给一个函数,将某些内容作为参数作为参数,您需要手动执行此操作,例如:

for(auto p : a) { // a is a std::vector<std::pair<int, int>>
    for(auto value : {p.first, p.second}) {
        std::cout << value << "n";
    }
}

std::pair用于std::mapstd::unordered_map的实现。

对于std::mapstd::unordered_map

value_typestd::pair<const Key, T>

除此之外,std::pair对于创建由两个成员组成的类型方便。

[对类]像数据类型或容器一样?

所有类都是数据类型。更具体地说,std::pair是类模板。它不是这样的课程,但它的实例是类。

std::pair不是容器。

在C

中对Pair类STL的用途是什么

其目的是将两个对象分组在一起。std::pair的实例是一个具有两个成员对象的类。可以在没有模板的情况下定义此类类:

struct CustomClassWithoutStd {
    int         first;
    std::string second;
};

std::pair优于自定义类的优点是您不需要为这些成员指定名称,并且具有不同用例的不同对可以进行处理,因为它们是同一对类型,每个成员的名称相同。

主要缺点是您不能为这些成员命名,这通常会降低程序的可读性。

我基本上想知道我们可以在哪个领域使用stl

标准库在关联容器的接口中使用std::pair,其中一对将键和值分组在一起。因此,当您使用此类容器时,也需要使用对。

我认为,这是一个糟糕的设计选择,一个具有正确命名成员的课程将是更好的。

我们如何迭代配对

如果您的功能模板可以接受该对的任何一部分,则可以用这样的两个部分调用它(我将流插入作为此类模板的示例(:

auto a = std::make_pair(1, 22);
cout << a.first;
cout << a.second;

相关内容

最新更新