在编写与vector有关的函数时总是会出现如下警告:
--------------------------------------------------------------------
警告信息 warning C4018: 有符号/无符号不匹配
--------------------------------------------------------------------
仔细研究之后发现是进行了与v.size()有关的操作引起的,用其中容器中与size()是被定义为unsigned int 型,而我们在遍历时会用int型导致警告的产生,因此在int 前面添加 unsigned即可。
例子如下:
- /**
- 求向量中所有元素的交错和
- @param v欲求交错和的向量
- @return 返回所有元素的交错和
- */
- double alternating_sum(const vector<double>& v)
- {
- if(v.size()==0) return false;
- double sum=0.0;
- for(unsigned int i=0;i<v.size();i++)
- {
- if(i%2==0)
- sum+=v[i];
- else sum-=v[i];
- }
- return sum;
- }
-------------------------------------------------------------
上面的函数中 将for循环中的i设置为unsigned int 型
for(unsigned int i=0;i<v.size();i++)
------------------------------------------------------------