【发布时间】:2016-07-17 17:29:13
【问题描述】:
我已经定义了这个结构和向量:
struct All
{
string name;
int id;
};
vector<All*> all;
我正在使用 lower_bound 函数将创建的带有数据的结构插入到向量中以保持排序。
All * tmp = new All(name, id);
auto it = lower_bound(all.begin(), all.end(), name, compare2());
all.insert(it, tmp);
当我想用name = test 找到结构时,我会这样做:
auto it1 = lower_bound(all.begin(), all.end(), name, compare2());
它给了我迭代器it 到那个名称中包含测试的结构,但是为什么我不能像cout << it1 -> id; 这样访问结构的元素?如何访问该结构的元素?
【问题讨论】:
-
必须在向量中存储指向 All 的指针吗?它让你和其他人的生活变得艰难。存储
All对象。 -
无法访问是什么意思?您是否收到编译错误或运行时错误?此外,您在第二段代码中发现
name的下限而不是tmp有点奇怪。理论上它可以工作,但我不确定它是否明显。 -
我遇到了错误,但
*it -> id解决了它我没有意识到我在那个向量中存储了指针,所以它是指向指针的指针
标签: c++ pointers vector iterator operators