옵션 |
|
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
int n, t, q;
vector<int> v[11];
int main() {
scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%d", &t);
v[t].push_back(i+1);
}
for(int i=0; i<11; i++) {
if(v[i].size()) {
printf("\n[%d] ", i);
for(int j=0; j<v[i].size(); j++)
printf("%d ", v[i][j]);
}
}
return 0;
}
위 코드는 잘 돕니다. // 0부터 10까지의 수들이 입력된 위치를 벡터에 저장
그런데, 위 코드의 파란 색 부분에 다음 코드를 넣으면 에러가 납니다;;;
int lb = lower_bound(v[i].begin(), v[i].end(), 2);
에러 메시지는 다음과 같습니다.
cannot convert ‘__gnu_cxx::__normal_iterator<int*, std::vector<int> >’ to ‘int’ in initialization
lower_bound()에서 파라미터로 주소를 전달하면 되는 것으로 알고 있고, v[i].begin()과 v[i].end()가 각각 v[i]의 시작주소, 마지막다음주소라서 가능할 것으로 생각되는데, 왜 안되는걸까요....?
에러코드를 이해하지 못하겠어요ㅠㅠ