草庐IT

std-ranges

全部标签

c++ - C++11 std::bind 的链式调用不起作用

我在调用嵌套的std::bind表达式时遇到问题。下面的代码演示了这个问题。它无法使用libc++进行编译,但可以使用boost:#defineBOOST0#ifBOOST#include#includeusingboost::function;usingboost::bind;#else#includeusingstd::function;usingstd::bind;usingstd::placeholders::_1;#endifintsum(inta,intb){returna+b;}//workstemplateintyeah(Ff,intc){returnf(c);}//b

c++ - 为什么宏 __STL_FUNCTION_TMPL_PARTIAL_ORDER 应该将模板函数包含在 std_pair.h 中

今天在STL_pair.h中看到如下代码:#ifdef__STL_FUNCTION_TMPL_PARTIAL_ORDERtemplateinlinebooloperator!=(constpair&__x,constpair&__y){return!(__x==__y);}templateinlinebooloperator>(constpair&__x,constpair&__y){return__y我不认为模板函数与偏特化有任何关联的功能模板。我错了吗? 最佳答案 编译器如何处理函数调用在C++中调用函数模板经历了名称查找(标准

c++ - std::array 的大小是否由标准定义

在C++11中std::array被定义为具有不比数组差的连续存储和性能,但我无法确定标准的各种要求是否暗示std::array具有与普通数组相同的大小和内存布局。那你能指望sizeof(std::array)==sizeof(int)*N吗?还是具体实现?特别是,这是否保证按照您期望的方式工作:std::vector>x(M);typedef(*ArrayPointer)[N];ArrayPointery=(ArrayPointer)&x[0][0];//useylikenormalmultidimensionalarray它适用于我试过的两个编译器(GNU和Intel)。此外,我能

c++ - std::chrono::high_resolution_clock 和屏幕刷新率的准确度(不是精度)

我使用的是visualstudio2012,想知道high_resolution_clock的准确性。基本上我正在编写一些代码来显示声音和图像,但我需要它们非常同步,并且图像必须无撕裂。我正在使用directX提供无撕裂图像,并使用high_resolution_clock定时屏幕刷新。显示器声称为60fps,但是,使用high_resolution_clock的计时给出了60.035fps的刷新率,平均超过10000次屏幕刷新。根据哪个是正确的,我的音频将在一秒后结束0.5毫秒,即一小时后大约2秒。我希望任何时钟都比这更准确-更像是1秒在一年内漂移,而不是一个小时。有没有人以前看过这

c++ - 使用 const 键类型引用调用 std::set of pointers 的 count 方法

我有一个类structS{boolfoo(constAType&v)const{returnvalues.count(&v);//compileerrorduetotheconstnessofv}private:std::setvalues;};这是一个简化版本。在实际代码中,foo做了一些复杂的事情。代码产生错误invalidconversionfrom‘constAType*’to‘std::set::key_type{akaAType*}’我认为foo应该采用'constAType&v'因为它不会改变v。成员变量“values”的类型不能为std::set,因为结构S的某些方法调

c++ - std::array 的内联初始化有什么问题?

考虑以下声明:#includestructX{//std::arrayarr={false,false,false};boolbrr[3]={false,false,false};};按原样,它可以通过g++5.2正常编译。但是如果我取消对std::array的注释,我会得到一个错误:test.cpp:5:46:error:arraymustbeinitializedwithabrace-enclosedinitializerstd::arrayarr={false,false,false};^test.cpp:5:46:error:toomanyinitializersfor‘std

c++ - 你如何构造一个带有嵌入空值的 std::string?

如果我想构造一个std::string,其中一行如下:std::stringmy_string("a\0b");我想在结果字符串中包含三个字符(a、null、b),但我只得到一个。什么是正确的语法? 最佳答案 自C++14起我们已经能够创建literalstd::string#include#includeintmain(){usingnamespacestd::string_literals;std::strings="pl-\0-op"s;//C++14之前问题是std::string采用constchar*的构造函数假定输入是

c++ - 有效比较 QString 和 std::string 是否相等

我想有效地比较一个QString和一个std::string是否相等。哪种方法最好,而且可能无需创建中间对象? 最佳答案 QString::fromStdString()和QString::toStdString()浮现在脑海中,但它们会创建字符串的临时拷贝,所以afaik,如果你不这样做如果不想拥有临时对象,您将不得不自己编写此函数(尽管效率更高是个问题)。例子:QStringstring="string";std::stringstdstring="string";qDebug()顺便说一句,在qt5中,QString::toS

c++ - std::lock_guard<std::mutex> 施工段错误?

我正在尝试使用std::mutex和std::lock_guard访问共享的std::queue。mutex(pending_md_mtx_)是另一个对象(其地址有效)的成员变量。我的代码似乎在lock_guard的构造上出现了段错误。有什么想法吗?我应该改用std::unique_lock(或其他对象)吗?在UbuntuLinux下运行GCC4.6(--std=c++0x)。我无法发布整个类(class),但只能访问下面列出的互斥锁和队列。templateclassDriver{public:templateDriver(Args&&...args):listener_(std::f

c++ - 从 `std::vector<char>` 内部的位获取整数

我有一个vector我希望能够从vector中的一系列位中获得一个无符号整数。例如而且我似乎无法编写正确的操作来获得所需的输出。我的预期算法是这样的:&第一个字节(0xff>>unusedbitsinbyteontheleft)结果剩下输出字节数*一个字节中的位数|这与最终输出对于每个后续字节:由(bytewidth-index)*bitsperbyte左边|这个字节与最终输出|最终输出的最后一个字节(未移位)>>最终输出由右侧字节中未使用的位数这是我尝试编写的代码,但没有给出正确的结果:#include#include#include#includetemplateclassBitV