草庐IT

std-span

全部标签

c++ - std::map of boost::mutex 具有奇怪的行为

我有这个代码://////DefaultNamespaces///usingnamespacestd;typedefmapt_map_shared_mutex;intmain(intargc,char**argv){t_map_shared_mutexlist_lock;boost::shared_mutexglobal_lock;stringi="ABC";boost::unique_lockl_lock(global_lock);boost::unique_locklock(list_lock[i]);//DoSomethingwiththatlocklock.unlock();l

c++ - std::priority_queue<> 什么时候进行 self 排序?

我想知道什么时候C++STLpriority_queue自行排序。我的意思是它insert当你push中的项目,或者当你peek时,它会自行排序并给你最高优先级的项目吗?或pop出来?我问这个是因为我的priority_queue将包含一个可能有值更新的数组的索引,我希望它在我执行pq.top();时更新.#include#include#includeusingnamespacestd;intmain(){priority_queuepq;pq.push(2);pq.push(5);//isthefirstelement5now?orwillitupdateagainwhenItop

c++ - std::map.insert "could not deduce template argument for..."

我正在尝试熟悉STL库,但我无法理解我的编译错误。我使用编译器错误字符串“无法推断...的模板参数”搜索了其他问题,但没有一个答案似乎适用或相关。Error4errorC2784:'boolstd::operator&,conststd::unique_ptr&)':couldnotdeducetemplateargumentfor'conststd::unique_ptr&'from'conststd::string'c:\programfiles(x86)\microsoftvisualstudio10.0\vc\include\xfunctional125我正在编写一个简单的解释

c++ - 为什么 std::getline 不阻塞?

我在Objective-C类中有这段代码(在Objective-C++文件中):+(NSString*)readString{stringres;std::getline(cin,res);return[NSStringstringWithCString:res.c_str()encoding:NSASCIIStringEncoding];}当我运行它时,我每次都会得到一个零长度的字符串。从来没有机会在命令行键入。没有什么。当我将这段代码逐字复制到main()中时,它起作用了。我在build设置下打开了ARC。我不知道发生了什么。OSX10.7.4,Xcode4.3.2。它是一个控制台

c++ - 在赋值运算符中分配 std::shared_ptr

我正在创建自己的自定义Filter类以用于boost::filtered_graph。WeightMap概念必须具有默认构造函数、复制构造函数和赋值运算符。我创建了下面的类,它有一个std::shared_ptr私有(private)成员。我的问题是我应该如何编写赋值运算符。复制构造函数没有问题,但赋值运算符不起作用。classBFDMFilter{private:constBGraph*m_battlemap;conststd::shared_ptrm_mv_ab;public:BFDMFilter():m_battlemap(nullptr),m_mv_ab(){}BFDMFilt

c++ - is_lock_free 未在 gcc 4.7.2 的 std::atomic<T> 中定义?

我遇到这个编译器错误functionstd::atomic::is_lock_free()const:error:undefinedreferenceto'__atomic_is_lock_free'whencompilingcodelikebelowusinggcc4.7.2onlinux.structS{inta;intb;};std::atomics;cout 最佳答案 AtomicAPIisn'tcompleteinGCC4.7:Whenlockfreeinstructionsarenotavailable(eitherth

C++ - MPIR:mpz_t 到 std::string?

我们如何将mpz_t转换为std::string?mpz_tVar;//Var=5000mpz_init_set_ui(Var,5000);std::stringStr="";//ConvertVartostd::string?mpz_clear(Var); 最佳答案 您正在寻找mpz_get_str:char*tmp=mpz_get_str(NULL,10,Var);std::stringStr=tmp;//Inordertofreethememoryweneedtogettherightfreefunction:void(*fr

C++11 - 无法使用 std::thread 和 std::condition_variable 唤醒线程

当我试图通过另一个线程唤醒一个线程时遇到了一个问题。一个简单的生产者/消费者。代码下方。第85行是我不明白为什么它不起作用的地方。生产者线程填充std::queue并调用std::condition_variable.notify_one()而消费者线程正在等待NOTstd::queue.empty()。在此先感谢您的帮助#include#include#include#include#include#include//requestclassrequest:publicstd::mutex,publicstd::condition_variable,publicstd::queue{

c++ - 如何在 Eclipse C++ 中使用 -std-c++11

我在代码中写了这一行vectorcone1{0.0f,2.4f,-11.0f,/*rotated*/30.0f,-1.5f,0.0f,0.0f};但是像在C++98中一样出现错误,变量必须由构造函数而不是{}初始化我已经搜索了我应该使用-std-c++11的解决方案,但是我不知道如何在Eclipse中添加它? 最佳答案 您可以通过几个简单的步骤完成此操作...右键单击项目并选择“属性”导航到C/C++Build->Settings选择工具设置标签。导航到GCCC++编译器->杂项在标记为OtherFlags的选项设置中添加-std=

c++ - 我可以覆盖 std::hash 吗?

我可以用我自己在C++11中定义的std::hash替换std::hash的实际实现吗?我的意思是从我的代码库开始,不涉及标准库。在这种情况下我看不到虚函数/多态性有任何用处,所以我想我无论如何都不能改变std::hash的定义? 最佳答案 您可以为特定类型专门化哈希。参见here和here例如像这样namespacestd{templatestructhash{size_toperator()(constFoo&x)const{/*yourcodehere,e.g."returnhash()(x.value);"*/}};}如果你