首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

帮忙看很小段代码 不明白,该怎么解决

2012-03-19 
帮忙看很小段代码 不明白#includeiostream#includevector#includealgorithmusingnamespacestdintma

帮忙看很小段代码 不明白
#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。

热点排行