c++ vector类型的解释+案例

本文详细介绍了C++中的vector数据结构,包括其定义、初始化方式,以及关键操作如元素添加、长度处理、访问与修改。重点展示了如何使用push_back、size、empty、at和insert等函数进行vector操作,并通过实例演示了如何使用vector作为参数传递。
摘要由CSDN通过智能技术生成

1.vector解释


   vector音标[ˈvektə( r )] 意思为矢量。vector的数据按存储的先后顺序进行排列的,vector允许我们对其中的数据进行访问,增加和删除。如果要在程序中使用vertor类型,则需包含头文件 #inclue<verctor>

2.vector对象的定义和初始化

(1)定义一个空的vector对象。
例如:

vector< int> vec;
vector< string> vec;

(2)定义vector的大小。
例如:

vector< int> vec(10);

(3)定义vector的大小,并且每个元素的初值为1.
例如:

vector< int> vec(10,1)

(4)使用已有的vector创建新的vector对象
例如:

vector(int> vecB(vecA);

(5)使用数组创建新的vector对象

int a[5] = {1, 2, 3, 4, 5};
vector<int> vec(a, a+5);
vector<int> vec(a+1, a+4);

3.vector的操作


(1)向vector中添加元素
   需要用到的函数为push_back(),该函数的作用是将一个值作为一个新的元素添加到vector对象的后面。
例如:

vector<int> vec;
vec.push_back(1); //将1插入到vec的末尾

(2)对vector对象的长度的处理
   用size函数可以返回元素的个数;用empty可以判断vector对象是否为空,它们的返回值为布尔值,如果为空返回true,否则返回false.
例如:

vector<int>vec(1);
	cout<<vec2.size()<<endl;
if(vec2.empty())
	cout<<"True"<<endl;

(3)访问vector的元素
   访问vector中的元素是通过元素所在的位置进行访问。有俩种使用方法,见例子:

for(i=0; i!=vec.size(); ++i)
	cout<<vec.at(i)<<endl;

for(i=0; i!=vec.size(); ++i)
	cout<<vec[i]<<endl;

(4)向vector中插入元素
   使用insert函数可以在vector对象中的任意位置插入新的元素。在insert中有三个参数:第一个参数是插入的位置,使用begin函数取得vector对象中的第一个元素的位置;第二个参数是指要插入的元素的个数,第三个参数是要插入的元素的值。
例如:

//注意,begin的英文注释是‘开始’的意思
//三个参数begin(),,,2,,,'x'
vec.insert(vec.begin(), 2, 'x');//在vec中最开始的地方插入俩个为x的元素
vec.inset(vec.begin()+1, 2, 'x'); //在vec中最开始的地方的第1个插入俩个为x的元素

(5)删除vector中的元素
   使用pop_back函数可以删除vector对象的最后一个元素
使用erase函数可以删除任意位置的元素,并且返回下一个元素位置的值。
例如:

vector<int> vec(5, 1);
vec.pop_back();//删除vec对象中最后一个元素

vec.erase(vec.begin()+1);//删除vec5中的第4个元素

4.vector形参的使用(常见)


   直接附上俩行代码,将其比较会后发现,案例2中·因使用了vector可免除一定的限制!

void fun(string w[], int n)
{
}

void fun1(vector<int> vec)//在c++面试中常常是这个格式
{

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
车辆识别是计算机视觉领域的一个重要应用,主要用于智能交通、安防等领域。C++结合OpenCV是一种广泛应用的车辆识别实现方式,下面介绍其基本原理和案例实现。 1. 原理 车辆识别的基本原理是先对车辆图片进行预处理,提取车辆轮廓、特征等信息,然后使用机器学习算法对车辆进行分类识别。具体步骤如下: 1.1 图像预处理 对车辆图片进行预处理,包括图像增强、图像分割、特征提取等步骤。常用的预处理方法有灰度化、高斯滤波、边缘检测、形态学操作等。 1.2 特征提取 对车辆图片进行特征提取,包括颜色、纹理、形状等方面的特征。常用的特征提取方法有LBP、HOG、SIFT等。 1.3 机器学习算法 使用机器学习算法对车辆进行分类识别。常用的算法有支持向量机、神经网络、随机森林等。在训练模型时,需要准备大量的车辆图片数据,进行数据清洗和数据增强等操作,以提高识别准确率。 2. 案例实现 以下是一个基于C++和OpenCV的车辆识别案例实现: 2.1 数据准备 首先准备车辆图片数据集,包括不同品牌、不同颜色、不同角度等多个方面的数据。对数据进行分类标注,方便后续的机器学习算法训练。 2.2 图像预处理 对车辆图片进行预处理,包括灰度化、高斯滤波、边缘检测等操作。代码示例: ``` Mat src = imread("car.jpg"); Mat gray; cvtColor(src, gray, COLOR_BGR2GRAY); Mat blur; GaussianBlur(gray, blur, Size(3, 3), 0); Mat canny; Canny(blur, canny, 50, 150); ``` 2.3 特征提取 对车辆图片进行特征提取,包括颜色、纹理、形状等方面的特征。代码示例: ``` // 计算LBP特征 Mat lbp; Ptr<LBPHFaceRecognizer> recognizer = LBPHFaceRecognizer::create(); recognizer->train(images, labels); recognizer->predict(testSample, predictedLabel, confidence); // 计算HOG特征 HOGDescriptor hog(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9); vector<float> descriptors; hog.compute(image, descriptors); ``` 2.4 机器学习算法 使用机器学习算法对车辆进行分类识别。常用的算法有支持向量机、神经网络、随机森林等。代码示例: ``` // 训练SVM模型 Ptr<SVM> svm = SVM::create(); svm->setType(SVM::C_SVC); svm->setKernel(SVM::LINEAR); svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6)); svm->train(trainData, ROW_SAMPLE, trainLabels); // 使用SVM模型进行预测 Mat testSample = imread("car_test.jpg"); testSample = preprocess(testSample); Mat testFeature = extractFeature(testSample); Mat testResponse; svm->predict(testFeature, testResponse); ``` 以上是一个基于C++和OpenCV的车辆识别案例实现,其中包括了图像预处理、特征提取和机器学习算法等多个方面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术Aaaaaa.

你的打赏对我来说没有丝毫的用处

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值