如何在c++中从pair类型容器中检索所有密钥

问题描述 投票:0回答:2

std::pair<uint32_t, std::vector<float32>> myPair

假设,

myPair = { {1221, [234.1, 1235.6]}, 
           {5579, [56.9, 5780.0]}, 
           { 467, [69579.8, 7974.55]} }

上面声明的

myPair
就是pair类型容器的对象。所以我只需要检索上面对中的密钥,即 1221、5579、467...等

c++
2个回答
2
投票

你需要这样的东西。您可以根据我的回答中的需要更改数据类型。在 for 循环中,您可以根据需要比较这些键值

#include <iostream>
#include <vector>

int main() {
    std::vector<std::pair<int, std::vector<float>>> myPairs = 
        { {1221, {  234.1F, 1235.6F}}, 
          {5579, {   56.9F, 5780.0F}}, 
          { 467, {69579.8F, 7974.55F}} };

    for (const auto& p : myPairs) {
        std::cout << p.first << "\n";
    }

    return 0;
}

1
投票

您还可以利用标准库通过 lambda 和

std::transform
轻松完成此操作。

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<std::pair<int, std::vector<float>>> myPairs = { 
        {1221, {  234.1, 1235.6 }},
        {5579, {   56.9, 5780.0 }},
        { 467, {69579.8, 7974.55}} 
    };
    std::vector<int> keys;

    std::transform(
        myPairs.cbegin(), myPairs.cend(), 
        std::back_inserter(keys),
        [](const auto &pair) { return pair.first; }
    );

    for (const auto &k : keys) {
        std::cout << k << '\n';
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.