int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 获取第一个元素的指针 int* ptr = vec.data(); // 打印第一个元素 std::cout << "First element: " << *ptr << std::endl; return 0; } ``` 在上面的示例中,`vec.data()` 返回指向 `vec` 内部数据的指针,然后将其...
获取最后一个数据位置的reverse_iterator,获取第一个数据前一个位置的reverse_iterator 范围for(重点) 可以很快遍历完一个vector容器,以迭代器作为底层实现的,灰常的好用 2.2.1.begin + end 首先登场的就是开头和结尾,这两个函数的功能和它们的名字是一样的,begin函数是指向vector第一个位置;end函数是指向vector的...
marks for student #" << i + 1 << ": " << endl; cin >> student_marks[i]; } cout << endl; // iterator 迭代器 // .begin() 指向容器中第一个元素 // .end() 指向容器中最后一个元素 // 下面的for循环遍历了容器中的每个元素,并输出 for (vector<double>::iterator it = student_...
(1)序列式容器(Sequence containers),每个元素都有固定位置--取决于插入时机和地点,和元素值无关,vector、deque、list; Vector:将元素置于一个动态数组中加以管理,可以随机存取元素(用索引直接存取),数组尾部添加或移除元素非常快速。但是在中部或头部安插元素比较费时; Deque:是“double-ended queue”的缩写,可以随...
push_back(1); //vector 容器提供的插入数据的方法 v.push_back(5); v.push_back(3); v.push_back(7); //迭代器 vector<int>::iterator pStart = v.begin(); //vector 容器提供了 begin()方法 返回指向第一个元素的迭代器 vector<int>::iterator pEnd = v.end(); //vector 容器提供了 end(...
一般insert/emplace返回第一个添加的元素的迭代器,而after版本指向最后一个插入元素的迭代器。 迭代器失效 添加元素 vector、string:存储空间重新分配,则全部失效;未重新分配,则插入之前部分的迭代器、引用指针仍有效。 deque:首尾以外的位置,全部失效。首尾添加,迭代器会失效,引用指针不会。
类比容器 vector<> 比容器轻量 封装参数(指向参数的指针、参数的数量和参数的类型等)的包装器/对象 缺点 代码逻辑需要明确参数的类型 一个 initializer_list<> 对象只支持一种类型(可以使用多个 initializer_list<> 对象按序支持多种类型) 按序:如一个 initializer_list\ 对象表示一部分参数都是 int 类型,另一...
vector对象的遍历 增加元素 删除元素 map map的创建 map的迭代器 map的元素 map访问key对应的value set 创建 插入 删除 查找 集合运算 queue 创建 插入 删除 查看 遍历 stack 创建 插入 删除 查看 遍历 makefile makefile和make的关系 makefile:makefile类似脚本,其中记录了编译C++工程的方法 ...
static定义的变量只能在当前 c 程序文件中使用,在另一个 c 代码里面 , 即使使用 extern 关键词也不能访问这个static变量。 int a[]={1,2},a、(a+1)代表的是地址,(a+1)就代表的是a[0+1]的地址。还有,数组名a一般都是代表首个元素的地址,但是有两种例外,第一,sizeof(a)这里的数组名代表整个数组,而...
可调用的PyFunctionObject对象PyObject *im_func;//self参数,instance对象PyObject *im_self;//弱引用列表,不做深入讨论PyObject *im_weakreflist;//速度更快的矢量调用//因为方法和函数一样,肯定是要被调用的//所以它们都自己实现了一套调用方式:vectorcallfunc//而没有走类型对象的 tp_callvectorcallfunc ...