我试图将向量对的第一列的第一个元素的第一个字符与用户输入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'
如果有人有办法做这个(看似简单的)任务,我将非常感激 - 花了很多时间寻找解决方案,但无济于事。
答案 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类型的变量。