我使用map< wchar_t , Point3d>
StationCoordinates创建了一个地图
我想避免may map中的重复数据,所以我通过功能ExistStation检查键映射,
但我工作不正常。
这是我的代码。
ExistStation功能有什么问题?
#include <map>
#include <iostream>
using namespace std;
struct Point3D
{
double x, y, z;
};
std::map<const wchar_t *, Point3D> StationCoordinates;
bool ExistStation(const wchar_t* StationName, Point3D & StationCoord)
{
//std::map<wchar_t *, Point3D>::iterator res;
auto res = StationCoordinates.find(StationName);
if (res != StationCoordinates.end())
{
StationCoord = res->second;
return true;
}
return false;
};
void main()
{
for (size_t j = 0; j < 4; j++)
for (size_t i = 0; i < 20; i++)
{
wchar_t * mapid = new wchar_t[20];
//wchar_t mapid[20];
swprintf_s((mapid), 20, L"ID%04i", i);
Point3D po;
if (ExistStation(mapid, po))
continue;
po.x = i * 100;
po.y = i * 1000;
po.z = i * 1000;
StationCoordinates[mapid] = po;
}
for (auto k : StationCoordinates)
{
wcout << k.first << ":" << k.second.x << "," << k.second.y << "," << k.second.z << endl;
}
wcout <<"The size of the map is:"<< StationCoordinates.size() << endl;
}
地图的大小必须是20,但它是80。