映射问题

Mapping Problems

本文关键字:问题 映射      更新时间:2023-10-16

我设置这个地图有一些问题。我正在检查"数据"是否与mymap中的字符串匹配。映射在一个单独的标头,从另一个标头调用。在任何情况下,我都会得到这些错误。在"mymap"行,我得到"此声明没有存储类或类型说明符。在"map"部分,我用"{…}"为聚合对象导出初始化。最后在"for"上,我得到"expected a declaration"。我使用的是Visual Studio 2010和Windows 7。下面是代码......

#include <stdio.h>
#include <iostream>
#include <map>
using namespace std;
void printContent(int)
map <int,string> mymap;
int i;
mymap [1]="audio/basic";
mymap [2]="audio/x-aiff";
mymap [3]="audio/x-wav";
mymap [4]="audio/x-mpeg";
mymap [5]="audio/x-mpeg-2";
for i=0 to map.count-1
  {
      char s= strstr(data, map[i])
      if s != NULL; // you found a match
      {
          return 1;
      }
      {
      else // keep looping
      }    
      return 0;
  }

这是一个工作的,可编译的示例,它做了一些我认为你正在尝试做的事情。这有帮助吗?

#include <iostream>
#include <map>
#include <string>
template <typename Map, typename Value>
typename Map::const_iterator find_value(const Map& m, const Value& v)
{
    for(typename Map::const_iterator it=m.begin(), iend=m.end(); it!=iend; ++it)
    {
        if(it->second == v) // do whatever test you like here
        {
            return it;
        }
    }
    return m.end();
}
int main()
{
    std::map<int,std::string> mymap;
    mymap[1] = "audio/basic";
    mymap[2] = "audio/x-aiff";
    mymap[3] = "audio/x-wav";
    mymap[4] = "audio/x-mpeg";
    mymap[5] = "audio/x-mpeg-2";
    std::cout << find_value(mymap, "audio/x-aiff")->first << 'n';
    return 0;
}

Try

void printContent(int)
{
    map <int,string> mymap;
    int i;
    mymap [1]="audio/basic";
    mymap [2]="audio/x-aiff";
    mymap [3]="audio/x-wav";
    mymap [4]="audio/x-mpeg";
    mymap [5]="audio/x-mpeg-2";
    for(i=0; i < map.count-1; ++i)
      {
          char s= strstr(data, map[i])
          if(s != NULL) // you found a match
          {
              return 1;
          }
          else
          {
             //Do something here
          }
      }
      return 0;
}

您正在访问没有值的map位置。

for循环的第一次迭代中,当i被设置为零时,您的程序访问map[0],您没有为其赋任何值。

map[0]赋值或者把你的地图索引改成map[i+1]