-2
문제가 있습니다. 데이터를 저장하려는 map
이 있습니다. 지도에 쌍을 추가하지만, 그걸 얻으려고하면 비슷한 데이터가 저장되지 않습니다. 내 코드 :C++지도가 작동하지 않습니다.
typedef std::map<unsigned long, int> SocketsTableType;
SocketsTableType ClientTable;
inline void AddClient(unsigned long id, int fd)
{
ClientTable.insert(std::pair<unsigned long, int>(id, fd));
}
inline int GetDescriptorByClient(unsigned long id)
{
SocketsTableType::const_iterator it;
for (it = ClientTable.begin(); it != ClientTable.end(); ++it)
{
if (it->first == id)
{
return it->second;
}
}
return 0;
}
int main()
{
AddClient(223322, 12);
int fd = GetDescriptorByClient(223322);
if(fd >= 0)
{
// NEVER HERE
}
}
내 코드에 어떤 문제가 있습니까?
감사합니다.
코드가 잘못되었습니다. 'addClient' 함수가 전혀 없습니다. 어떻게 컴파일 되었습니까? 아니면 .. 했어? –
그리고'AddClient'에 대한 호출을'AddClient'로 바꾸면 저에게 효과적입니다. –
'AddClient' 또는'addClient'가 두 곳에서 모두 사용 되었다면, 코드는 잘 동작합니다. 그러나'std :: map'은 여러분이 사용해야하는'find' 메소드를 가지고 있습니다. 그것은 더 효율적인 방법입니다. – juanchopanza