目录
三、操作:将flash回调函数的参数和vector元素对比,返回此元素的下标
三、操作:方法一:将vector中的字符串和输入的字符串对比,输出满足的vector的序列号
一、目的:
1、想了解vector的遍历方法
二、参考:
1、论C++11 中vector的N种遍历方法
https://www.cnblogs.com/xylc/p/3653036.html
①总结:good:适合多看
三、操作:将flash回调函数的参数和vector元素对比,返回此元素的下标
1、代码
头文件
#include <algorithm>//算法头文件
#include <vector>
using namespace std;
创建
//元素的数组
vector<string> vecStr_Element;
void CALLBACK CallBackFlash(void* pExample,const char* command, const char* args)//command: 命令;args是arguments参数的缩写默认名
{
CMy01_MFCAndFlashDlg *pThis= (CMy01_MFCAndFlashDlg *)pExample;
//
for (vector<string>::iterator iter=pThis->vecStr_Element.begin();iter!=pThis->vecStr_Element.end();iter++)
{
//是否亮灯
if(strcmp(command,"Open")==0)
{
//什么元素
if (strcmp(args,(*iter).c_str())==0)
{
//迭代器在vector容器中的下标
int d=distance(pThis->vecStr_Element.begin(),iter);
int a;
}
}
else if(strcmp(command,"Close")==0)
{
}
}
}
//获取配置文件中的元素
char key[MAX_PATH];
char out[MAX_PATH];
for (int i=0;i<numElement+1;i++)
{
sprintf(key,"e%d",i+1);
FastReadIniValue(c_tmp,"element",key, out,0);
vecStr_Element.push_back(out);
}
三、操作:方法一:将vector中的字符串和输入的字符串对比,输出满足的vector的序列号
1、注意
- ①使用的是iterator迭代器而不是const_interator
- ②if时候使用的是指针*iter
- ③当前序列号:使用了int类型来计数
- ④此方法适合vector中没有重复的情况,有重复的情况另外考虑
- ⑤头文件 #include <vector>
- using namespace std;
- 当前序列号:可以使用#include <algorithm>//算法头文件 里面的distance
1、代码
int CSerialPort::CompareSignal_targetAndInput(vector<string> _vec_str_target,string _str_input)
{
int reselt=-1;
//将vector中的字符串和输入的字符串对比,输出满足的vector的序列号
int i=0;
for (vector<string>::iterator iter=_vec_str_target.begin();iter!=_vec_str_target.end();iter++)
{
if (*iter==_str_input)
{
reselt =i;
}
i++;
}
return reselt;
}