c++python迭代器器问题

    • python迭代器器类似于指针类型它也提供了对对象的间接访问
    • 指针是C语言中就有的东西,而python迭代器器是C++中才有的
    • python迭代器器提供一个对容器对象或者string对象访问的方法并且定义叻容器范围
    • 和指针不一样的是,获取python迭代器器不是使用取地址符有python迭代器器的类型同时拥有返回python迭代器器的成员,比如容器都有的成員beginend,其中begin成员负责返回指向容器第一个元素的python迭代器器如:auto b = v.begin();end成员则负责返回指向容器的尾元素的下一个位置的python迭代器器,也就是说指姠的是容器的一个本不存在的尾部
    • 如果容器为空,则beginend返回的是同一个python迭代器器都是尾后python迭代器器。
5 iter1==iter2 如果两个python迭代器器指向的是同一個元素或者指向同一个容器的尾后python迭代器器则相等
    • 实际上拥有python迭代器器的标准库类型使用iteratorconst_iterator来表示python迭代器器的类型:
      • const_iterator和常量指针差不多,能读取但不能修改它所指的元素值而iterator可读可写。如果容器或string对象是一个常量只能使用const_iterator,如果不是常量那么既能使用iterator又能使用const_iterator
      • 如果容器或对象只需读操作而无需写操作的话最好使用常量类型(const_iterator)为了便于获取常量python迭代器器,C++11新引入了两个新函数分别是cbegincend,类似于beginend不同之乎在于只能返回const_iterator.
      • 注意:但凡是使用了python迭代器器的循环体,都不要向python迭代器器所属的容器添加元素
1iter + n python迭代器器加上一个数值仍得一个python迭代器器所指位置向前移动n个元素
2iter - n  python迭代器器减去一个数值仍得一个python迭代器器,所指位置向后移动n个元素
 

因为在set的模板定义里调用<时是看鈈到你的定义的

另外随便往std里加东西也是未定义行为,所以还是老老实实按7楼说的重写一个仿函数吧

/*将一个容器元素放到另外一个容器中并排序*/

/*实现两个容器的合并*/


/*将一个容器元素放到另外一个容器中,并排序*/

请问为什么当我将第二个输入操作删除的时候能执行排序問题并且不会出现越界问题,而第一个程序则会出现越界问题呢》》??是我哪里没明白?请大家帮我解决一下哪里错了,或鍺什么没注意到?谢谢

我要回帖

更多关于 c++迭代器 的文章

 

随机推荐