请教一下容器set的用法
有定义:
struct FileInfo
{
int nNumber;
int nCount;
char szFile[128];
};
map<int, set<FileInfo>> mapFile;
FileInfo file1;
file1.nCount = 10;
file1.nNumber = 1;
sprintf_s(file1.szFile, 128, "zxm%d", 1);
mapFile[1].insert(file1);
为什么编译不过,要报一堆错error C2784: “bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)”: 无法从“const FileInfo”为“const std::basic_string<_Elem,_Traits,_Alloc> &”推导 模板 参数
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\string(150) : 参见“std::operator <”的声明
如果将set里的结构体换成存指针,就可以编译通过
map<int, set<FileInfo*>> mapFile;
FileInfo file1;
file1.nCount = 10;
file1.nNumber = 1;
sprintf_s(file1.szFile, 128, "zxm%d", 1);
mapFile[1].insert(&file1);
同样如果将set换成vector也是ok了,能顺利编译通过
map<int, vector<FileInfo>> mapFile;
FileInfo file1;
file1.nCount = 10;
file1.nNumber = 1;
sprintf_s(file1.szFile, 128, "zxm%d", 1);
mapFile[1].push_back(file1);