【发布时间】:2020-08-17 00:53:15
【问题描述】:
所以,我在解决一个问题并编写了以下代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, x;
cin >> n;
map <int, vector<int> > m;
for (int i = 0; i < n; i++)
{
cin >> x;
m[x].push_back(i);
}
int prev_ind = n;
int ans = 0;
for (auto i : m)
{
if (i.second.back() < prev_ind)
{
ans++;
prev_ind = i.second[0];
}
else
prev_ind = *lower_bound(i.second.begin(), i.second.end(), prev_ind);
}
cout << ans << endl;
}
}
所以,当我从 lower_bound 函数的前面删除指针时,代码显示编译错误,谁能告诉我为什么会发生这种情况?
【问题讨论】:
-
在
lower_bound前面添加*并不是向任何东西“添加指针”。它取消引用函数返回的迭代器。 C++ 是一种上下文敏感的语言,各种符号在不同的上下文中表示不同的东西。*并不总是意味着“指针”。
标签: c++ c++11 iterator stdmap lower-bound