<
應提供std::map
。有關最佳做法的更多信息,請參閱James McNellis的回答。
此問題中包含的代碼寫得不好。這只是因爲我在玩SPOJ,輸入數據是嚴格有效的。 std::string
方法是我最初選擇的方法,但結果不夠快。
謝謝。
我知道我不能地圖直接使用char[]
,如map<char[], int>
。因此,我把它放在課堂上。但它仍然可以通過編譯。如何處理?
#include <stdio.h>
#include <map>
using namespace std;
class id {
public:
char v [30];
};
int main() {
map<id, int> m;
id a;
while (gets(a.v)) {
m[a]++;
}
return 0;
}
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_function.h: In member function ‘bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = id]’:
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_map.h:418: instantiated from ‘_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = id, _Tp = int, _Compare = std::less<id>, _Alloc = std::allocator<std::pair<const id, int> >]’
prog.cpp:15: instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/4.3.4/include/g++-v4/bits/stl_function.h:230: error: no match for ‘operator<’ in ‘__x < __y’
看來它是與比較,但我仍然在黑暗中。
你的回答正是我想要的。非常感謝你。 (有關代碼的問題在編輯問題中有解釋,我希望這是Stack Overflow的最佳工作方式,順便說一下,我的答案終於被接受了。) – 2011-06-02 04:34:44