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

时间:2015-02-18 16:02:57

标签: c++ vector

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

如果有人有办法做这个(看似简单的)任务,我将非常感激 - 花了很多时间寻找解决方案,但无济于事。

3 个答案:

答案 0 :(得分:2)

变化:

&vec.first[0]

要:

vec.front().first

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

答案 1 :(得分:1)

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

vec[0].first 

答案 2 :(得分:0)

第一种方法可让您轻松访问配对中的第一项。当应用于一对变量时,首先会给你第一个项目(在你的情况下为int),第二个项目将给你第二个项目(在你的情况下是字符串)。

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

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

vec[i].first

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

你得到的错误

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

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