映射问题

时间:2011-09-06 17:56:15

标签: c++ visual-c++

我在设置这张地图时遇到了一些问题。我正在检查“数据”是否与mymap中的字符串匹配。从另一个标题调用的单独标题中的映射。无论如何我都会遇到这些错误。在“mymap”行中,我得到“这个声明没有存储类或类型说明符。在”map“部分,我初始化为'{,,,}'为聚合对象进行了表示。最后在”for“上得到“预计会有一个崩溃”。我正在使用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;
  }

3 个答案:

答案 0 :(得分:1)

这是一个可操作的,可编译的示例,它根据我认为您尝试做的事情做了一些事情。这有帮助吗?

#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;
}

答案 1 :(得分:0)

尝试

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;
}

答案 2 :(得分:0)

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

for循环的第一次迭代中,当i设置为零时,程序将访问map[0],而您尚未为其分配任何值。

将值分配给map[0]或将地图索引更改为map[i+1]