问题描述
解决方案
你可以去查看MSDN的官网API
- Create a vector v5 by copying the range v4[_First, _Last)
std::vector v5(v4.begin() + 1, v4.begin() + 3);
可以看出括号这里是放置一个迭代器或者数组,直接写数组名ia就是指数组ia第一个位置,ia+8就是数组第八个位置。 数组和指针是有区别的,这里直接写一个数组名ia,可以理解为指向数组首地址的一个指针。
解决方案二:
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector c(beg,end)//创建一个以(beg;end)为区间的vector
按照声明来说,beg和end对于容器来说,它只看内存的区间,也就是ia[8]对于它来说,其实是合法的地址。区间是合法的,自然就可以赋值了。但是对于数组ia[8]来说,他只能取地址,但是无法对地址的内容进行写,因为已经非法内存地址了。
ia+8是可以取地址的。计算机取偏移量的。ia+100都可以的。只不过内存的权限就很难说了。
时间: 2024-09-28 13:19:31