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。你可以按任何方式检查对象,但不允许更改。谢谢,这很有意义