在std :: map和duplicates中找到wchar_t数据

时间:2015-12-28 11:38:50

标签: c++

我使用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。

0 个答案:

没有答案