C++ std::无序_集插入获取对象

C++ std::无序_集插入获取对象,c++,c++11,C++,C++11,我正在无序的集合中插入一个对象。 我想在插入/如果插入后从集合中获取实际对象副本 #include <iostream> #include <unordered_set> #include <string> int main ( void ) { std::unordered_set<std::string> sentence; auto res = sentence.insert( "alex" ); if ( res

我正在无序的集合中插入一个对象。 我想在插入/如果插入后从集合中获取实际对象副本

#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;
}
#包括
#包括
#包括
内部主(空)
{
无序的集合句;
自动恢复=句子插入(“alex”);
如果(第二项决议)

std::cout要求
无序集
的成员为
常量
,这样它们的哈希就不会改变-这会破坏底层的数据结构。迭代器在
第一个
元素的类型中强制执行
常量。

要求
无序集
的成员为
常量t
这样它们的散列就不会改变-这将破坏底层数据结构。迭代器在
第一个
元素的类型中强制执行
常量

无序集
的成员必须是
常量
,这样它们的散列就不会改变-这将破坏底层数据结构。迭代器在
第一个
元素的类型中强制执行
常量

无序集
的成员必须是
常量
,这样它们的散列就不会改变-这会破坏底层数据结构。迭代器在
第一个
元素的类型中强制执行
常量元素。

要修复编译器错误,请更改行

    return std::make_shared<Policy>( *res.first );
return std::make_shared(*res.first);

return std::make_shared(**res.first));

*res.first
共享的\u ptr
*(*res.first)
是对底层
策略
对象的引用。

要修复编译器错误,请更改行

    return std::make_shared<Policy>( *res.first );
return std::make_shared(*res.first);

return std::make_shared(**res.first));

*res.first
共享的\u ptr
*(*res.first)
是对底层
策略
对象的引用。

要修复编译器错误,请更改行

    return std::make_shared<Policy>( *res.first );
return std::make_shared(*res.first);

return std::make_shared(**res.first));

*res.first
共享的\u ptr
*(*res.first)
是对底层
策略
对象的引用。

要修复编译器错误,请更改行

    return std::make_shared<Policy>( *res.first );
return std::make_shared(*res.first);

return std::make_shared(**res.first));


*res.first
shared\u ptr
*(*res.first)
是对底层
Policy
对象的引用。

\u policies
变量的集合声明添加到发布的问题代码中。这一点很重要。我感觉如果你没有在集合中存储
std::shared\u ptr
,你应该这样做。(看起来你不是这样的)是的,萨胡,对不起,typo@WhozCraig不,我没有。我使用的是策略对象。我已将其更改为std::unordered_集,并且没有编译错误。谢谢,请详细说明为什么会发生这种情况?如果您的集确实是
std::unordered_集
,那么您的代码应该编译。.将
\u策略
变量的集声明添加到发布问题代码。这很重要。我觉得如果你没有在你的集合中存储
std::shared\u ptr
,你应该这样做。(而且看起来你不是这样)是的,萨胡,对不起,typo@WhozCraig不,我没有。我使用的是策略对象。我已将其更改为std::unordered_集,并且没有编译错误。谢谢,请详细说明为什么会发生这种情况?如果您的集确实是
std::unordered_集
,那么您的代码应该编译。.将
\u策略
变量的集声明添加到发布问题代码。这很重要。我觉得如果你没有在你的集合中存储
std::shared\u ptr
,你应该这样做。(而且看起来你不是这样)是的,萨胡,对不起,typo@WhozCraig不,我没有。我使用的是策略对象。我已将其更改为std::unordered_集,并且没有编译错误。谢谢,请详细说明为什么会发生这种情况?如果您的集确实是
std::unordered_集
,那么您的代码应该编译。.将
\u策略
变量的集声明添加到发布问题代码。这很重要。我觉得如果你没有在你的集合中存储
std::shared\u ptr
,你应该这样做。(而且看起来你不是这样)是的,萨胡,对不起,typo@WhozCraig不,我没有。我使用的是策略对象。我已将其更改为std::unordered_集,并且没有编译错误。谢谢,请详细说明为什么会发生这种情况?如果您的集真的是
std::unordered_集
,那么您的代码应该编译..因此,基本上我无法访问插入的对象,以便为了避免破坏常量?@Alex你可以访问,但必须是
const
access。你可以按任何方式检查对象,但不允许进行任何更改。谢谢,这非常合理。为了避免破坏常量,基本上我无法访问插入的对象?@Alex你可以访问,但必须是
const
access。您可以按任何方式检查对象,但不允许进行任何更改。谢谢,这非常合理。为了避免破坏const'ness,基本上我无法访问插入的对象?@Alex您可以访问,但必须是
const
access。您可以按任何方式检查对象,但不允许更改NGE是允许的。谢谢,这很有意义o,基本上我不能访问插入的对象,以避免破坏常量?@Alex你可以访问,但必须是
const
access。你可以按任何方式检查对象,但不允许更改。谢谢,这很有意义