如果我使用std:find在向量对中找到一个元素,如何将向量中的值转换为字符串?

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

在使用find函数通过检查string check;来检查vector<pair<string, string>>是否在pair[i].first中之后,我想将pair[i].second中的元素转换为单独的字符串string holder;

如何在不使用循环的情况下执行此操作,或者这是不可避免的,这是唯一的方法吗? find函数除了true还是false之外还能返回值吗?

c++ vector find std-pair
2个回答
0
投票

取消引用std::find函数返回的迭代器。迭代器指向的基础值是std::pair类型。要通过迭代器访问名为firstsecond的对的底层成员对象,请分别使用->first->second

std::vector<std::pair<std::string, std::string>> v { {"aa", "bb"}, { "cc", "dd" }};
auto mypair = std::make_pair<std::string, std::string>("cc", "dd");
auto foundit = std::find(std::begin(v), std::end(v), mypair);
std::string s1;
std::string s2;
if (foundit != std::end(v)) {
    s1 = foundit->first; // first element
    s2 = foundit->second; // second element
}
else {
    std::cout << "v does not contain the pair." << '\n';
}

1
投票

std :: find返回找到的项的迭代器,如果找不到则返回end()。所以如果找到它,你就有了一个迭代器。

© www.soinside.com 2019 - 2024. All rights reserved.