草庐IT

different-size

全部标签

c++ - C/C++ : What is the difference between a statically-linked library and an object file?

我知道编译时包含在可执行文件中的代码可能来自目标文件(.o文件)和静态链接库(.lib/.a文件)。这两者在根本上和概念上有什么区别?为什么“目标代码”和“静态链接库”之间有不同的概念?各自的优点和缺点是什么,为什么要使用一个而不是另一个?静态链接库是否可以从目标文件生成,反之亦然,目标文件是否可以从静态链接库生成? 最佳答案 目标文件是已编译但未链接的代码。库包含目标文件。因此你的问题变成了,“如果我只能使用目标文件,为什么要使用静态链接库?”原因如下。与对象集合不同,每个对象都有自己的符号表,库有一个单一的、统一的符号表,在库调

c++ - 我什么时候应该使用 vector<int>::size_type 而不是 size_t?

在thisquestion我看到以下内容:for(vector::size_typeix=0;ix!=ivec.size();++ix){ivec[ix]=0;}我明白为什么int这里没有使用,但为什么不直接使用size_t?什么情况下应该用vector::size_type而不是size_t? 最佳答案 初级使用时间size_type在模板中。虽然std::vector::size_type通常是size_t,some_other_container::size_type可能是其他类型1。允许用户添加到std的少数内容之一命名空间

c++ - size_t 到 unsigned int(来自 API 函数)

我正在使用OracleAPI访问数据库,此API有一个函数readBuffer(char*buffer,unsignedintsize);,我无法对其进行任何更改。我有一个使用此API的类,我的函数的签名目前采用std::string和unsignedint作为大小,问题是当我将std::string.size()传递给函数的size参数时,我从编译器收到一条警告,将size_t转换为unsignedint可能导致数据丢失。我想知道是否有一种有效的方法可以将size_t转换为unsignedint,这样我就可以将它传递给我的API而不是从编译器得到警告?我理解size_t的目的,并且在

c++ - 输入参数传递 : is there a size threshold for efficient pass-by-value?

在C++中,当输入参数复制成本低时(例如,int、float等),它通常被传递只需按值。相反,复制起来并不便宜的输入“观察到的”参数(例如std::string)由const&传递。我想知道像POD这样的类型表示具有int坐标的二维vector,例如structVec2i{intX;intY;};在32位MSVC编译器上,它只有8个字节(2*sizeof(int))。您会按值还是按const&传递它?那么Vec2d有double类型的坐标呢?(在MSVC上它将是2*sizeof(double),所以2*8=16字节。)是否有“大小阈值”(例如16字节?)用于放置一行并说:“对于超过X大

c++ - 如何去掉doxygen协作图中的 "size_t"

Doxygen(v1.8.11)创建漂亮的UML协作图。不错,除了被汇集到“size_t”的行弄得乱七八糟。形式上正确,但完全没用。有没有办法防止“size_t”出现在聚合类中? 最佳答案 在您的Doxygen配置文件中将size_t放在EXCLUDE_SYMBOLS下。http://www.doxygen.nl/config.html#cfg_exclude_symbols 关于c++-如何去掉doxygen协作图中的"size_t",我们在StackOverflow上找到一个类似的问

c++ - 在 size_t 中使用负整数是否安全?

我刚刚看到一些像这样的C++代码。它使用一个条件来决定是通过std::vector向前走还是向后走。编译器没有提示,但我认为size_t是未签名的。这很危险吗?vectorv{1,2,3,4,5};boolrev=true;size_tstart,end,di;if(rev){start=v.size()-1;end=-1;di=-1;}else{start=0;end=v.size();di=1;}for(autoi=start;i!=end;i+=di){cout 最佳答案 以这种方式使用无符号整数(并且size_t是无符号的)

c++ - 重载运算符 : const vs non-const return type : any difference of performance?

如果我们去维基百科article关于C++运算符,我们有一个例子:Addition:a+b->TT::operator+(constT&b)const;因此运算符返回类型为T的非常量。如果我们看这个guideline作者说返回类型应该是const以避免以下语法:(a+b)=c现在假设我不介意这种语法,并考虑a和b是大数组。从“纯”性能的角度来看,返回类型中缺少const关键字是否会阻止编译器的优化(g++和带有-O3的英特尔icpc)?如果答案是"is",为什么? 最佳答案 这是一个有趣的问题。在C++03中,没有更好的机会使用这两

c++ - 如何处理 size_t 与 std::size_t?

刚读完:Does"std::size_t"makesenseinC++?我意识到使用::size_t不符合标准(虽然我的编译器支持)当你#include.我想遵守标准,但我不想在前面加上std::我所有的size_t的。那么,更习惯/流行的处理方式是什么:写usingstd::size_t;?包括?仅仅依靠编译器的支持?还有别的吗? 最佳答案 您应该使用using指令指定它。usingstd::size_t;将其添加到每个编译单元的全局范围,或者如果它会在全局范围内造成干扰,则将其添加到本地范围。stddef.h也有效,正如您所指出

c++ - 部分模板特化与不匹配的 `int` 和 `size_t` 不编译

引用以下代码#include#includetemplatestructWot;templatestructWot>{};intmain(){assert(sizeof(Wot>)==1);}这适用于clang但不适用于gcc,当我更改部分特化的类型以在索引序列中接受std::size_t但它有效时。谁是对的?Clang还是gcc?在此处查看实际操作https://wandbox.org/permlink/5YkuimK1pH3aKJT4 最佳答案 gcc是对的。这正是[temp.deduct.type]/18:IfPhasafor

c++ - "const T& operator[](size_type i)"中的 const 有什么用?

我在一本书http://www.acceleratedcpp.com/中发现了这个有趣的行-资源-第11章-Vec.h(我是一个std::vector翻版)而且我真的不明白这个版本的运算符有什么用。为什么要定义此运算符的两个版本(常量和非常量)?我什至试过了,在我看来,非常量版本一直被调用......你能解释一下吗?#include#include#include#includeusingnamespacestd;templateclassVec{public:typedefT*iterator;typedefconstT*const_iterator;typedefsize_tsiz