我在unordered_set中插入一個對象。 我想在插入/之後得到實際的對象拷貝。std :: unordered_set insert獲取對象
#include <iostream>
#include <unordered_set>
#include <string>
int main (void)
{
std::unordered_set<std::string> sentence;
auto res = sentence.insert("alex");
if (res.second)
std::cout << *res.first << std::endl;
return 0;
}
以上簡單的例子,工作正常。 當我嘗試它與我的自定義類:
std::unordered_set<Policy> _policies;
...
...
if (std::shared_ptr<Policy> policy = calculatePolicy (state, action, 0.f))
{
auto res = _policies.insert (*policy);
if (res.second)
return std::make_shared<Policy>(*res.first);
我得到:
no known conversion for argument 1 from ‘std::__detail::_Node_const_iterator<Policy, true, true>’ to ‘const Policy&’
爲什麼我會得到一個const MyClass的&的的std :: _詳細:: _ Node_const_iterator isntead?
如何獲取剛剛插入的對象的引用?
將'_policies' var的設置聲明添加到發佈的問題代碼中。這一點很重要。我有一種感覺,如果你沒有在你的設置中存儲'std :: shared_ptr',你應該。 (它看起來不像你)。 –
WhozCraig
2014-09-26 22:10:18
是R Sahu,對不起,錯字 – 2014-09-26 22:15:47
@WhozCraig不,我不是我正在使用Policy對象。我已經將它更改爲std :: unordered_set>,我沒有收到編譯錯誤。謝謝,謹慎地闡述爲什麼會發生這種情況? –
2014-09-26 22:17:58