push_back和push
时间: 2024-06-08 09:03:12 浏览: 95
push_back和push是C++中的两个向容器添加元素的函数。其中,push_back用于向容器尾部添加一个元素,而push则用于向容器头部添加一个元素。这两个函数可以用于vector、list、deque等STL容器。
举例来说,如果我们有一个vector<int>类型的容器vec,可以使用push_back添加一个整数元素:
```
vec.push_back(1);
```
这将在容器vec的尾部添加一个整数元素1。
如果我们使用push函数,则可以在容器的头部添加一个元素:
```
vec.push(2);
```
这将在容器vec的头部添加一个整数元素2。
需要注意的是,push函数只能用于双向链表和deque等支持头部插入的STL容器。如果对于vector这样的单向链表,我们只能使用push_back函数来添加元素。
相关问题
int m, n; for (m = 0; m < contours.size(); m++) { for (n = 0; n < contours[m].size(); n++) { switch (m) { case 0: point_0.push_back(contours[m][n]); break; case 1: point_1.push_back(contours[m][n]); break; case 2: point_2.push_back(contours[m][n]); break; case 3: point_3.push_back(contours[m][n]); break; case 4: point_4.push_back(contours[m][n]); break; case 5: point_5.push_back(contours[m][n]); break; case 6: point_6.push_back(contours[m][n]); break; case 7: point_7.push_back(contours[m][n]); break; case 8: point_8.push_back(contours[m][n]); break; case 9: point_9.push_back(contours[m][n]); break; case 10: point_10.push_back(contours[m][n]); break; case 11: point_11.push_back(contours[m][n]); break; case 12: point_12.push_back(contours[m][n]); break; case 13: point_13.push_back(contours[m][n]); break; case 14: point_14.push_back(contours[m][n]); break; case 15: point_15.push_back(contours[m][n]); break; case 16: point_16.push_back(contours[m][n]); break; case 17: point_17.push_back(contours[m][n]); break; case 18: point_18.push_back(contours[m][n]); break; case 19: point_19.push_back(contours[m][n]); break; default: cout << "input error" << endl; } } } Mat img(321, 432, CV_8UC1, cv::Scalar(0));
这段代码的作用是将轮廓(contours)中的点按照所属的轮廓编号(m)存储到不同的vector中。每个轮廓都有一个对应的vector存储其所有的点。最后根据存储的点绘制一个大小为321x432的灰度图像(img)。其中CV_8UC1表示每个像素用8位无符号整数表示,即灰度图像;cv::Scalar(0)表示初始化所有像素值为0,即黑色。
.push_back和->push_back的区别
`.push_back` 和 `->push_back` 都是用来向容器(如std::vector)添加元素的成员函数,但在使用上有些区别:
1. `.push_back`:这是普通类的对象直接使用的成员函数,例如,如果你有一个名为`myVector`的std::vector实例,你可以像这样操作:
```
myVector.push_back(element);
```
这表示这个操作是在当前类实例上下文中进行的。
2. `->push_back`:当你有一个指向指针的指针,指向某个包含`push_back`方法的对象时,你会使用箭头运算符(->)来访问这个方法。比如:
```
(*pointer).push_back(element);
```
这里的`pointer`是一个指向std::vector类型的指针,通过解引用后调用`push_back`。
简而言之,`.push_back`是针对非指针的对象,而`->push_back`则是对指针对象的操作。注意,在处理动态分配的内存时,通常会使用`->`来避免潜在的悬垂指针问题。
阅读全文