然后定义两个iterator,分别指向两个vector的头部
vector<int>first
vector<int>second
vector<int>::iterator poiFir
vector<int>::iterator poiSec
poiFir=first.begin()
poiSec=second.begin()
然后循环直到poiFir指向first的尾部或poiSec指向second的尾部
每次循环的内部:
判断*poiFir和*poiSec的大小
(1)若相等,则为相同的元素,记录此值(可以另建一个vector<int>save用于存放相等的值,save.push_back(*poiFir)),再将poiFir++;poiSec++;
(2)若*poiFir大于*poiSec的值,则将poiSec++;
(3)若*poiFir小于*poiSec的值,则将poiFir++;
循环结束后,save中存储的值即为两个vector中相等的值
时间效率为两个vector中元素个数的和
上图是一个简单的例子,b为一矩阵,现在想统计第二列中数值等于1的元素个数,首先做一个逻辑判断,即b[,2]==1,得到一个由布尔变量true和false组成的向量。
此时只需要知道true的数量,由于对布尔变量求和,true转化为1,false转化为0,故对该向量求和即可得到true的数量,即b[,2]中等于1的数量。