草庐IT

c++ - 使用 std::istream_iterator 读取最多 N 个值

如果我确定我的输入流包含10个值,我可以读取它们std::copy_n(std::istream_iterator(input),10,output);如果我不知道我有多少值,我可以读取所有值std::copy(std::istream_iterator(input),std::istream_iterator(),output);我的问题是如何读取最多10个值。我在这里尝试对I/O错误保持鲁棒性,但似乎copy_n将尝试读取输入的末尾(它不知道它应该停止),并且copy不会在10个值处停止.我必须推出自己的copy_at_most吗?(嗯,显然对copy_n还是有些混淆:std::i

C++ 11 : Mutex & Condition Variable Cannot be Copied

我是C++11的新手,正在使用线程。我遇到了一个无法复制互斥锁和条件变量对象的场景。代码是这样的....classproducer{public:producer(mutexm,condition_variablecv){mut=m;//ERRORcvar=cv;//ERROR}private:mutexmut;condition_variablecvar;}尝试在构造函数中复制变量时出现错误。似乎复制构造函数设置为deleteformutex和cv。有办法克服吗?我想要一个生产者和消费者类,然后从ma​​in函数传递互斥量和cv。所以基本上来自main函数的调用应该是这样的.....

c++ - msvc is_copy_assignable 始终为真?

#includeclassTest{public:Test(constTest&)=delete;Test&operator=(constTest&)=delete;};voidfn(Test&a,constTest&b){a=b;}static_assert(!std::is_copy_assignable::value,"Testshouldn'tbeassignable");在MSVC2013Update3下编译此代码时static_assert意外失败,并且函数fn编译失败(如预期)。这很矛盾,对吧?我是否滥用了is_copy_assignable?有没有其他方法可以测试这种情

c++ - 将迭代器从原始容器镜像到它的拷贝

我有一个类,它是一个容器的委托(delegate),并在内部存储一个迭代器到这个容器。classA{public:listm_data;list::iteratorm_relevantDataStart;A(constA&cpy){m_data=cpy.m_data;m_relevantDataStart=cpy.m_relevantDataStart;//现在的问题是,如果我尝试编写一个简单的构造函数来如上所述复制容器和迭代器,迭代器在复制的上下文中变得不可用,更具体地说,我稍后在尝试执行时遇到运行时异常比较:`if(m_relevantDataStart==m_data.begin

c++ - react 线程需要其引用共享状态的 std::shared_future 的 OWN COPY

我对EffectiveModernC++的第270页有疑问,作者是ScottMeyers。第5/6行,他写道:“唯一的微妙之处在于每个react线程都需要引用共享状态的std::shared_future的自己的拷贝,...”我的问题是:为什么我们必须将std::shared_future的拷贝传递给每个线程中的每个lambda函数?而先验的,我没有看到通过引用传递它有任何问题,这样就有一个独特的共享状态可以被不同的线程使用?我写了一段改编自DrScottMeyers的书的代码,即使我通过了sfparreference,它仍然有效。因此,是否可以通过引用传递它?#include#inc

c++ - memcpy 和 C++ 类模板——如何使用它?

所以..我们怎样才能调用类似memcpy(数据复制,数据,长度);复制抽象数据T?或者如果抽象T不安全,假设我们知道T是一个POD(普通旧数据,基本上是一个C结构)——是否可以复制它? 最佳答案 你的意思是为一些任意的C++类型T工作吗?除非您知道T是POD(普通旧数据,基本上是C结构)类型,否则使用memcpyT类型的对象是不安全的。这将阻止T的复制构造函数运行,例如,这可能导致不正确的复制(尝试memcpy一个std::vector不会复制数据缓冲区,例如)。 关于c++-memcp

c++ - copy-and-swap 习语在 self 分配期间如何工作?

我正在阅读优秀的copy-and-swapidiom问题和答案。但是我没有得到一件事:在self分配的情况下它是如何工作的?例子中提到的对象other不会释放分配给mArray的内存吗?那么,自分配的对象不会以拥有无效指针而告终吗? 最佳答案 ButonethingIamnotgettinghowdoesitworkincaseofselfassignment?让我们看一个简单的例子:classContainer{int*mArray;};//CopyandswapContainer&operator=(Containerconst

c++ - 将 std::map 复制/插入到 boost::bimap

我尝试将std::map的元素复制到boost::bimap中。我无法让std::copy工作(boost文档似乎表明bimap应该与std::copy兼容)。我尝试了以下方法:std::mapcurves;boost::bimap,boost::bimaps::multiset_of>m_curves;...//someinitialisationofcurvesstd::copy(curves.begin(),curves.end(),std::inserter(m_curves,m_curves.end()));//Thisfailsm_curves.insert(curves.

c++ - 为什么模板参数上的 is_copy_constructible 静态断言失败?

我试图对模板参数进行静态断言,以检查/强制Type可复制构造。但是静态断言失败。我不明白为什么,也找不到任何文档为什么它会在静态评估中失败。实例化的类是可复制构造的,但是它使用了我认为被称为奇怪的重复模板参数模式的东西。完整的测试代码如下:#include#includeusingnamespacestd;templateclassFunContainer{//static_assert(is_copy_constructible::value,"Typemustbecopyconstructible!");//::value//::value;};};classFun:publicF

c++ - 在不复制的情况下从 Eigen::SparseMatrix 中提取 block /ROI

我想知道有没有什么好的方法可以从Eigen::SparseMatrix中提取block/ROI?更准确地说,我要提取的是内部vector。我想做的是这样的:typedefEigen::SparseMatrixSpMat;//PreparesomesparsematrixSpMatspmat;//ExtractlinesfromitconstSpMat&row_i=spmat.innerVector(i);constSpMat&row_j=spmat.innerVector(j);//Somecalculationwithrow_iandrow_j...根据我的测试,row_i和row_