问题:有没有更好的方法来循环遍历结构中的所有向量,而不是像在示例中所示的那样逐一调用它们? #在C++中向量<string>的循环遍历C++
我正在建立一个分类器。有几个类别的项目分别由一个字符串向量表示。每个矢量都相当小,100个元素。我在下面的链接阅读的例子:
How to find if an item is present in a std::vector?
下面是我实现的代码的简化例子。代码编译并运行,但对我来说似乎笨重。提前致谢。
#include "stdafx.h"
#include <vector>
#include <string>
#include <iostream>
using namespace std;
struct Categories
{
vector <string> cars;
vector <string> food;
};
struct ThingsType
{
Categories iLike;
Categories dontLike;
};
typedef vector<string>::const_iterator vIter;
int FindValue(vector<string>& vec, string keyWord)
{
int indx = -1;
vIter iter = find(vec.begin(), vec.end(), keyWord);
if (iter != vec.end()){
// found it
std::cout << "Value: " << *iter << " found in location: " << iter - vec.begin() << endl;
indx = iter - vec.begin();
}
else
{
// did not find it.
std::cout << "Value: " << keyWord << " not found." << endl;
}
return indx;
}
int _tmain(int argc, _TCHAR* argv[])
{
int result[10];
ThingsType things;
things.iLike.cars = { "Mustang", "Pinto" };
things.dontLike.food = { "Squash" };
string item("Pinto");
// I want to loop over all vectors searching for items
result[0] = FindValue(things.iLike.cars, item);
result[1] = FindValue(things.iLike.food, item);
// . . .
result[9] = FindValue(things.dontLike.food, item);
return 0;
}
变化:'INT FindValue(矢量&更多,串关键字)'的'INT FindValue(矢量&更多,常量字符串和关键字)',你每次调用'FindValue'时间复制的字符串。其他可能的改进是对类别数组进行排序并使用'lower_bound'查找。 –
NetVipeC
2014-09-05 18:51:55