帮忙看很小段代码 不明白
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char* argv[])
{
vector <int> IntVector;
for(int i = 0 ; i < 10 ; i ++){
IntVector.push_back(i);
}
IntVector.push_back(3);//a
IntVector.push_back(3);//b
IntVector.push_back(3);//c
cout < <sizeof(IntVector) < <endl;//16 是默认大小吗
pair <vector <int> ::iterator,vector <int> ::iterator> Pair,Pair1;
Pair = equal_range(IntVector.begin(),IntVector.end(),3);
cout < < *(Pair.first) < < " " < < *(Pair.second) < < endl;//3 4 我把a b c去了还是34 返回值啥意思
vector <int> ::iterator iter;
for(iter = IntVector.begin();iter != IntVector.end(); ++iter){
cout < < iter < < endl;//这里每两个相差4
}
return 0;
}
[解决办法]
1.16是vector <int> 的大小,但不包含其中的元素。
2.equal_rang必须用于排序后的容器或区间,你的用法有问题。
first指向第一个与3等价的元素,如果不存在,则指向元素3应插入的位置;
second指向与3等价的元素区间的下一个位置。
3.对于vector <int> ,iteraotr会是元素的地址,因为vector <int> 元素在连续区间上,且sizeof(int) = 4,所以相差4。