(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
赛博在评论中指出,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对的类型向量的变量。
相关文章:
- 如何忽略第一个字符输入后的所有内容
- 增量生成 - 错误:字符串的第一个字符应'0'或'1'
- 对c++中的输入使用getline函数时忽略第一个字符
- C++如何通过忽略每行的第一个字符来读取 unicode 文件
- 输入文件中的第一个字符是输出文件中的最后一个字符,反之亦然
- 检索字符串的第一个字符,并在C++中按字母顺序进行比较
- 这个RLE解码功能只解码第一个字符,我做错了什么?
- 如何忽略除第一个字符之外的所有字符
- C++ 如何从用户输入中读取第一个字符并忽略 rest(字符类型)
- CIN.IGNORE删除第一个字符的第二次函数被调用
- 使用CTYPES将字符串从Python传递到C - 仅发送第一个字符
- 为什么在使用循环时忽略输入的第一个字符
- 仅将输入的第一个字符用于 char 变量
- getline删除第一个字符;删除cin.ignore();无法解决
- 仅分配第一个字符,将 LPCTSTR 转换为字符*
- 如何获取指向字符数组中第一个字符的常量指针
- 访问没有字符的字符串的第一个字符
- 如何将 char 类型数组传递给函数并将第一个字符数组复制到第二个图表数组并使用 c++ 进行比较
- 文本文件中的第一个字符会导致 .substr() 错误
- RegSetValueEx 仅显示写入第一个字符