我有 2 个字符数组,例如“const char *arr1[ArrSize] = {“Blah1”、“Wibble1”、“Shrug1”};”。为了将它们放入向量中,我找到了一个不错的快速解决方案:
void fillVecTest()
{
const int ArrSize = 3;
const char *arr1[ArrSize] = {"Blah1", "Wibble1", "Shrug1"};
const char *arr2[ArrSize] = {"Blah2", "Wibble2", "Shrug2"};
std::vector<std::string> vec1(arr1, arr1+ArrSize);
std::vector<std::string> vec2(arr2, arr2+ArrSize);
std::vector<std::string>::iterator l_It1Vec1;
std::vector<std::string>::iterator l_It = vec1.end();
l_It = find(vec1.begin(), vec1.end(), std::string("Blah1"));
if(l_It != vec1.end())
{
size_t l_pos = l_It - vec1.begin();
printf("found %s, pos=%u val: %s\n", l_It->c_str(),l_pos, vec2[l_pos].c_str());
}
}
现在我认为也应该可以将两者都直接放入映射中,因为 arr1 是键,arr2 是值。我尝试了一些方法,但没有成功。
void fillMapTest()
{
const int ArrSize = 3;
const char *arr1[ArrSize] = {"Blah1", "Wibble1", "Shrug1"};
const char *arr2[ArrSize] = {"Blah2", "Wibble2", "Shrug2"};
std::map<std::string,std::string> map1;//(pair(arr1,arr1), pair(arr1+ArrSize,arr2+ArrSize));
std::map<std::string,std::string>::iterator l_It1Map1;
//l_It1Map1 = find(map1.begin(), map1.end(), std::string("Blah1"));
if(l_It1Map1 != map1.end())
{
printf("found key: %s, val: %s\n",l_It1Map1->first.c_str(), l_It1Map1->second.c_str());
}
}
int _tmain(int /*argc*/, _TCHAR* /*argv[]*/)
{
fillVecTest();
fillMapTest();
return 0;
}
我认为只需要解决函数“fillMapTest”中的注释行。构造函数和 find 不像我想要的那样工作。
请有任何STL专家的想法?