我想使用迭代器将值赋值给对向量。
我的代码:
class MyData
{
public:
void add(const pair<int, string *> &elem)
{
auto it = find_if(myVec.begin(), myVec.end(), [&](pair<int, string *> const & ref)
{
return ref.second == elem.second;
});
if (it != myVec.end()) //if found
{
*it->first = elem.first; //Error : indirection requires pointer operand
return;
}
myVec.push_back(elem);
}
vector<pair<int, string *>> myVec;
};
但是我遇到以下错误:
* it-> first = elem.first; ->间接需要指针操作数
如何正确地将值赋给向量对中的元素?
答案 0 :(得分:1)
没有*
。请记住,->
也会取消引用,并且一旦取消引用迭代器,就会有一个对其进行迭代的对象,在这种情况下,该对象是一对。您当前的代码尝试取消引用该对,这没有意义,因此会出错。您也可以做(*it).first
,但这就是->
的目的,那么为什么不使用它呢?
#include <vector>
using namespace std;
class MyData
{
public:
void add(const pair<int, string *> &elem)
{
auto it = find_if(myVec.begin(), myVec.end(), [&](pair<int, string *> const & ref)
{
return ref.second == elem.second;
});
if (it != myVec.end()) //if found
{
it->first = elem.first; //Error : indirection requires pointer operand
return;
}
myVec.push_back(elem);
}
vector<pair<int, string *>> myVec;
};