(C++) 访问向量对第一列中第一个元素的第一个字符

(C++) Accessing first character of first element in first column of vector pair

我正在尝试将向量对第一列的第一个元素的第一个字符与用户输入进行比较 int,并且只保留以该数字开头的那些值。该对的格式为

vector< pair <int, string> > vec;

我试过了

for(int i = 0; i < vec.size(); ++i)
{
    if(&vec.first[0] != userInput)
    {
        vec.erase(vec.begin(), vec.end());
    }
}

这会引发错误

error: 'class std::vector<std::pair<int, std::basic_string<char> > >' has no member named 'first'

如果有人有办法完成这个(看似简单的)任务,我将不胜感激 - 已经花了很多小时寻找解决方案,但无济于事。

变化:

&vec.first[0]

收件人:

vec.front().first

正如 Cyber​​ 在评论中所说,vec[0].first 也是有效的。

您需要先访问向量的位置,然后是对的第一个元素:

vec[0].first 

第一种方法可让您轻松访问一对中的第一项。当应用于一对变量时, first 会给你第一个项目(你的情况下是 int ), second 会给你第二个项目(你的情况下是 string )。

您错误地将名为 'first' 的方法应用于向量,而不是向量中的一对。

要访问向量中的一对,请使用:

vec[i].first

您访问向量中第 i 个元素的位置(坚持您使用 i 表示循环计数器的示例)。 vec[i] returns 一个 pair 类型的变量,然后你可以调用第一个方法。

你得到的错误

error: 'class std::vector<std::pair<int, std::basic_string<char> > >' has no member named 'first'

试图解释这一点,C++ 总是很难阅读。它告诉您没有找到名为 'first' 的成员(在本例中为方法)应用于映射到字符串的整数对类型向量的变量。