草庐IT

Block_size

全部标签

c++ - 是否有标准名称(模板或宏)来替换 ARRAY_SIZE、_countof 等?

我不是在谈论std::array或任何东西,只是经典的VanillaC/C++数组。我知道可以实现ARRAY_SIZE/_countof的各种方式,我只是想知道他们是否已经设法为此标准化了一个名称(在std::我假设)。如果没有,是否有相关建议? 最佳答案 当前的解决方法std::extent-数组的大小如果您正在使用native数组,您可以使用std::extent来自,用于生成数组的Nth维(默认为第一个)中的元素数。inta1[1024];inta2[std::extent::value];//int[1024]一点间接(通用

C++11 auto 和 size_type

鉴于auto的以下用法:std::vectorv;for(autoi=0;i对于C++来说,推导i将是理想的选择作为std::vector::size_type,但如果它只查看i的初始化程序,它会看到一个整数。i的推导类型是什么?在这种情况下?这是auto的适当用法吗?? 最佳答案 使用decltype而不是auto来声明i。for(decltype(v.size())i=0;i更好的是,如@MarkB的回答所示,使用迭代器迭代vector。 关于C++11auto和size_type,

c++ - 将 size() 用于 for 构造中的第二个表达式总是不好的吗?

在下面的示例中,我是否应该期望每次循环时都会调用values.size()?在这种情况下,引入一个临时的vectorSize变量可能是有意义的。或者现代编译器是否应该能够通过识别vector大小不能改变来优化调用。doublesumVector(conststd::vector&values){doublesum=0.0;for(size_tii=0;ii请注意,我不关心是否有更有效的方法来对vector的内容求和,这个问题只是关于在for结构中使用size()。 最佳答案 这是一种明确的方法-size()只被调用一次。for(si

c++ - size_t 参数新运算符

我有一点想不通新运算符重载。假设,我有一个类MyClass但MyClass.hMyClass.cpp和main.cpp文件是这样的;//MyClass.hclassMyClass{public://Somememberfunctionsvoid*operatornew(size_tsize);voidoperatordelete(void*ptr);//...};//MyClass.cppvoid*MyClass::operatornew(size_tsize){returnmalloc(size);}voidMyClass::operatordelete(void*ptr){free

c++ - CUDA - 如果我选择了太多 block 怎么办?

我仍然对这些未知大小的矩阵很生气,每个维度可能在10-20.000之间变化。我正在查看CUDASDK并想知道:如果我选择的block数太高怎么办?类似于在X和Y维度上由9999x9999block组成的网格,如果我的硬件具有无法容纳所有这些block的SM,内核是否会出现问题或者性能会崩溃?我不知道如何在block/线程中标注可能变化很大的东西。我正在考虑使用我的硬件支持的最大块数,然后使它们内部的线程在所有矩阵中工作,这是正确的方法吗? 最佳答案 线程block与核心没有一对一的映射。block在可用时被安排到核心,这意味着您可以

微信小程序错误码:“errcode“:40163和微信小程序-pad block corrupted 问题

微信小程序错误码:“errcode”:40163,“errmsg”:"codebeenused和微信小程序-padblockcorrupted问题场景:服务端调用auth.code2Session接口请求连接:https://api.weixin.qq.com/sns/jscode2session?appid=&secret=&js_code=&grant_type=authorization_code服务端报错,报错信息:"padblockcorrupted",打印返回值为:{“errcode”:40163,“errmsg”:“codebeenused,hints:[req_id:0IbF0

c++ - 流缓冲区之间的 block 级数据复制

我想在std::streambuf之间高效复制数据实例。也就是说,我想在它们之间铲出数据block,而不是逐个字符地进行复制。例如,这不是我要找的:stringbufin{ios_base::in};stringbufout{ios_base::out};copy(istreambuf_iterator{in},istreambuf_iterator{},ostreambuf_iterator{out});这里有语法糖,还有更多的错误检查:ostreamos{&out};os这是operator*)的一个实现片段在我的标准库中(MacOSX,XCode7):typedefistream

c++ - std::string 实现是否符合 's.c_str() + s.size()' 不一定与 '&s[s.size()]' 相同?

§21.4.5[string.access]const_referenceoperator[](size_typepos)const;referenceoperator[](size_typepos);Returns:*(begin()+pos)ifpos.Otherwise,returnsareferencetoanobjectoftypecharTwithvaluecharT(),wheremodifyingtheobjectleadstoundefinedbehavior.至少对我来说,第二部分意味着这个“charT类型的对象”可能位于存储在std::string中的序列之外。目

c++ - 为什么 std::tr1::function 与 Objective-C block 一起工作?

当我发现下面的代码确实有效时,我感到非常惊讶:std::vectorlist/*=...*/;std::tr1::functionfunc=^(inti){returni+1;};std::for_each(list.begin(),list.end(),func);似乎std::tr1::function能够从Objective-Cblock构造,但我不太确定是如何实现的,因为(上次我检查过),它的实现没有'专门处理block。它是否以某种方式隐式吸出底层函数指针?另外,这种行为是否未定义并且可能会改变? 最佳答案 更新:我错了,

c++ - 延长临时生命周期,适用于 block 范围的聚合,但不能通过 `new` ;为什么?

备注:这个问题最初被问为acomment来自RyanHaining在thisanswer.structA{std::stringconst&ref;};//(1)Aa{"helloworld"};//temporary'slifetimeisextendedtothatof`a`std::cout//(2)A*ptr=newA{"helloworld"};//lifetimeoftemporarynotextended?std::coutref问题为什么临时文件的生命周期在(1)中延长,而在(2)中没有? 最佳答案 LONGSTOR