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

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

本文关键字:第一个 字符 一列 元素 访问 C++ 向量      更新时间:2023-10-16

我试图将向量对第一列第一个元素的第一个字符与用户输入的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

赛博在评论中指出,vec[0].first也是有效的。

您需要首先访问verctor的位置,然后访问对中的第一个元素:

vec[0].first 

第一个方法允许您轻松访问一对中的第一个项。当应用于一个pair变量时,第一个会给你第一个项(在你的情况下是int),第二个会给第二个项(你的情况中是字符串)。

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

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

vec[i].first

其中,您正在访问向量中的第i个元素(坚持使用i表示循环计数器的示例)。vec[i]返回一个类型为pair的变量,然后可以调用.上的第一个方法

你得到的错误

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

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