您的位置:首页 > 新闻 > 资讯 > 佛山网站建设定制_爱网站在线观看视频_google关键词优化_互联网广告行业分析

佛山网站建设定制_爱网站在线观看视频_google关键词优化_互联网广告行业分析

2025/6/2 17:01:10 来源:https://blog.csdn.net/weixin_44630050/article/details/142623862  浏览:    关键词:佛山网站建设定制_爱网站在线观看视频_google关键词优化_互联网广告行业分析
佛山网站建设定制_爱网站在线观看视频_google关键词优化_互联网广告行业分析

什么是迭代器

  • 是一个广义指针
  • 它可以是指针,也可以是一个可对其执行类似指针得操作-如解除引用(如operator*())和递增(operator++())
  • STL中每个容器类都定义了一个合适的迭代器,该迭代器的类型是一个名为iterator的typedef,作用域是整个类
  • 例如:为vector的double类型规范声明一个迭代器
vector<double>::iterator pd; // pd 一个迭代器
vector<double> scores;
pd = scores.begin(); // pd指向了第一个元素
*pd = 22.3;
++pd; // 让pd指向下一个元素
// 自动推到类型
auto pd = scores.begin();
  • end()成员函数标识超过结尾的位置,是一个指向容器最后一个元素后面的那个元素

vector中一个我不熟悉的函数

  • erase()方法删除了矢量中给定区间的元素,接受两个迭代器参数,这些参数定义了要删除的区间
  • insert()方法功能与erase相反,接受3个迭代器参数,第一个参数指定了新元素插入位置,第二个和第三个迭代器定义了被插入的区间,该区间通常为另一个容器对象的一部分
vector<int> old_v;
vector<int> new_v;
...
old_v.insert(old_v.begin(), new_v.begin() + 1, new_v.end());
// 将矢量new_v中除了第一个元素外的所有元素插入到old_v矢量的第一个元素前面

常见的错误

1.先看一段代码

#include <iostream>
using namespace std;
double average1(int array[10])
{double result = 0.0;int len = sizeof(array) / sizeof(array[0]);for (int i = 0; i < len; i++){result += array[i];}return result / len;
}int main()
{std::cout << "Hello World!\n";int array1[] = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};int len = sizeof(array1)/sizeof(array1[1]);cout << average1(array1) << endl;
}
  • 这段代码的基本释义就是计算一个数组的平均值,下面打印的结果
  • 29.1
  • 这是因为,函数average1这个方法的参数是一个指针,不再是一个数组,所以sizeof(array) = sizeof(array[0]) = 4,其实就是一个指针得大小,这个问题就是“数组在做参数时的退化行为”,接下来改进,使用容器的方式
double average3(vector<int>& v)
{double result = 0.0;vector<int>::iterator it = v.begin();// 或者是auto it = v.begin();for (; it != v.end(); ++it){result += *it;}return result / v.size();
}

29.2

VS注释快捷键
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com