标签: size-t

std::size_t 的大小有多一致

我正在编写一组充当接口的纯虚拟类。这个想法是,实现此类接口的代码可以使用不同的构建配置、编译器,甚至不同的 STL 实现来构建,以通过此类接口使用此类对象。

像和一样的普通旧数据uint32_t是标准化的。(不是因为标准没有说明它的大小。)doublefloatbool

属于哪个类别std::size_t?它纯粹是机器架构的功能吗?例如,在 32 位机器上,它可能sizeof(std::size_t)不是 4?

c++ size-t abi c++11

1
推荐指数
1
解决办法
377
查看次数

std::size_t 还是 std::vector<Foo>::size_type?

当我在一个std::vector<Foo>(或每个具有随机访问迭代器的容器)上循环时,我使用了一个无符号整数变量i。如果我想尊重规范,我应该使用std::size_t还是容器本身给出的类型:std::vector<Foo>::size_type

如果我选择std::size_t(出于可读性原因),我可以确定std命名空间中每个容器的每个实现都使用std::size_tassize_type吗?

注意:我只使用 C++98(出于兼容性原因)。

c++ stl size-t size-type c++98

1
推荐指数
1
解决办法
1707
查看次数

强制转换为无符号而不指定类型

#include <stdio.h>

int main(){
  ssize_t a= -1;
  size_t b = (unsigned)a;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

a是 8 个字节都设置为1,但是bunsigned没有做适当的情况下转换为 4 个字节的数字(unsigned size_t),这是为什么?为什么它不会变成一个 8 字节的无符号变量?

c unsigned casting size-t

1
推荐指数
1
解决办法
156
查看次数

std::array 中的 size_t 模板参数

std::array 模板参数是template < class T, size_t N > class array;其中 N 代表数组中元素的数量。

我的疑问是为什么是类型std::size_t?std::size_t 不是以字节为单位的对象/指针大小的别名。std::size_t

为什么用它来表示std::array这里的元素数量?

c++ size-t stdarray

1
推荐指数
1
解决办法
131
查看次数

隐式转换为 size_t?

我想知道 - 当我们用某个值初始化 unsigned size_t 时,C++ 是否会进行隐式转换?像这样:

size_t value = 100;
Run Code Online (Sandbox Code Playgroud)

将“u”文字添加到值中以防止这种转换是否有意义,就像这样?

size_t value = 100u;
Run Code Online (Sandbox Code Playgroud)

c++ size-t

1
推荐指数
1
解决办法
954
查看次数

size_t用作公式中的值

这是一个功能阅读线的简短片段.这bufsize与它相比((size_t)-1)/2有何可能?

我想象将变量与例如比较.int - 这是不可能的; 相反,INT_MAX是正确的,我想.那么该代码如何实际工作并且不会出错?

int c;
size_t bufsize = 0;
size_t size = 0;

while((c=fgetc(infile)) != EOF) {
    if (size >= bufsize) {
        if (bufsize == 0)
                bufsize = 2;
        else if (bufsize <= ((size_t)-1)/2)
                bufsize = 2*size;
        else {
                free(line);
                exit(3);
        }
        newbuf = realloc(line,bufsize);
        if (!newbuf) {
                free(line);
                abort();
        }
        line = newbuf;
    }
    /* some other operations */
}
Run Code Online (Sandbox Code Playgroud)

c size-t

0
推荐指数
1
解决办法
1351
查看次数

C - 为什么在eclipse中无法识别size_t?

在eclipse中它不识别类型size_t,它在它上面写错误和消息uknown类型名称'size_t',它写得正确

c size-t

0
推荐指数
1
解决办法
425
查看次数

C++自我执行标准:size_t

简单的问题,在处理数组或其他大型数据结构时,我通常会在我通常使用整数的地方强迫自己开始使用size_t(或unsigned longs?)会对我有好处吗?

假设你有一个向量指针:

auto myVectorPtr = myVector;
Run Code Online (Sandbox Code Playgroud)

您不知道,此向量的大小大于:

std::numeric_limits<int>::max();
Run Code Online (Sandbox Code Playgroud)

你有一个循环:

for(int i = 0; i < myVectorPtr->size(); ++i)
Run Code Online (Sandbox Code Playgroud)

使用不是更好

for(size_t i = 0; i < myVectorPtr->size(); ++i)
Run Code Online (Sandbox Code Playgroud)

避免遇到溢出?

我想我的问题确实是,在算术和其他常见操作中使用size_t(或unsigned longs?)是否有任何副作用.如果我开始使用size_t(或unsigned longs?)而不是经典int,我还需要注意什么.

c++ int size-t

0
推荐指数
1
解决办法
185
查看次数

将'int'强制转换为'size_t'

size_t和int之间的区别是有据可查的,我概括了一下:前者是某些无符号整数类型的别名,它是依赖于实现的,而后者是有符号的; 前者适用于内存声明,而后者适用于算术运算.

我的问题是,如果我做一些算术计算来给int(它永远不会太大而且总是正的)并将它分配给size_t变量(用于访问数组位置),是否存在任何可能出现问题的情况出现?

c++ int casting size-t

0
推荐指数
1
解决办法
4695
查看次数

正确扫描和打印size_t变量的方法(与平台无关)

我已经阅读了有关此主题的几篇文章,但是有人说应该完成的方式取决于您所使用的体系结构和系统(Windows / Linux),那么是否有适当的方法可以独立于该平台?

c printf scanf size-t

0
推荐指数
1
解决办法
3680
查看次数

标签 统计

size-t ×10

c++ ×6

c ×4

casting ×2

int ×2

abi ×1

c++11 ×1

c++98 ×1

printf ×1

scanf ×1

size-type ×1

stdarray ×1

stl ×1

unsigned ×1