我有std::set
其中包含來自int
的值。現在我使用迭代器來確定set
是否爲value
。用g當++編譯在沒有迭代器C++的std :: set中搜索
敵不過
std::set<int> fdsockets; void myfunc(int fd) { if(fdsockets[fd] != fdsockets.end()) { // my code } }
但我有錯誤:
但我的應用程序中使用這個搜索很ofter並使用迭代太慢搜索,我可以做這樣的事情'運營商[]'在'fdsockets [fd]'
也許我可以用東西,而不是std::set
?
謝謝!
http://en.cppreference。 com/w/cpp/container/set/find –
在find集上的循環中使用'find()'的原因是find()是O(log(N))算法。一個循環比O(N)更糟糕(我懷疑它是一個O(N * log(N))算法),因爲對於那些關聯容器,'operator ++()'相當複雜。 –
std :: set有一個find()方法,它是O(log(n)) –