相关疑难解决方法(0)

我在哪里可以找到size_t的定义?

我看到用这种类型定义的变量,但我不知道它来自何处,也不知道它的目的是什么.为什么不使用int或unsigned int?(其他"类似"类型呢?Void_t等).

c c++ variables

115
推荐指数
4
解决办法
18万
查看次数

我应该为`size_t`包含哪个标题?

根据cppreference.com size_t定义的几个标题,即

<cstddef>
<cstdio>
<cstring>
<ctime>
Run Code Online (Sandbox Code Playgroud)

而且,从C++ 11开始,也在

<cstdlib>
<cwchar> 
Run Code Online (Sandbox Code Playgroud)

首先,我想知道为什么会这样.这与DRY原则是否相矛盾?但是,我的问题是:

我应该使用上面哪个标题来使用size_t?它有关系吗?

c++ typedef

82
推荐指数
4
解决办法
4万
查看次数

如果我使用sizeof和size_t,我是否应该总是包含stddef.h

如果我使用sizeof运算符并size_t在我的代码中使用,我是否必须包含stddef.h?我没有包含stddef.h,我的代码在没有警告的情况下编译MVS2008和Borland C++ BuilderX.

非常感谢...

c sizeof size-t

29
推荐指数
2
解决办法
4万
查看次数

如何编写适用于32位和64位的std :: bitset模板

请考虑以下代码

template<unsigned int N> void foo(std::bitset<N> bs)
{ /* whatever */ }

int main()
{
    bitset<8> bar;
    foo(bar);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

g ++在64位上抱怨这个,因为<8>被解释为unsigned long int,它与模板不完全匹配.如果我将模板更改为unsigned long int,那么32位编译会抱怨.

显然,解决这个问题的一种方法是将bitset <8>更改为bitset <8ul>,但有没有办法重新编写模板部分,以便它可以使用数字文字的默认解释?

c++ 64-bit templates bitsets

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

为什么我需要在C++中使用`size_t`?

作为初学者,我真的很困惑size_t.我可以使用int,float或其他类型.为什么还要声明size_t类型.我感觉不到它的优点.我看过一些页面,但我仍然无法理解.

c++ visual-c++ c++11

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

为什么函数参数类型为size_t?

memset的原型是void *memset(void *s, int c, size_t n);.那么为什么第三个参数是类型的size_tmemset只是一个例子,我想要更多的一般原因.提前致谢.

c

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

Visual Studio 2017:linux项目中的模糊符号size_t

在Visual Studio 2017中创建Linux项目并插入using namespace std;源代码时,如下所示:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    size_t i = 1;
    string s = to_string(i);
    cout << i << s << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

VS强调size_t并说这是一个模糊的符号.VS pic 1

如果我按下F12(Go to definition),它会为我提供两个定义位置:

stddef.h

(C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include\x86_64-linux-gnu\5\include\stddef.h):

// ...
namespace std
{
  typedef __SIZE_TYPE__     size_t;
// ...
Run Code Online (Sandbox Code Playgroud)

c++config.h

(C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\Linux\include\usr\include\x86_64-linux-gnu\c++\5\bits\c++config.h):

// ...
#if !(defined (__GNUG__) && defined …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2017

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

short,int,long,float,double long,double,char的大小

我想找出(short/int/long/float/double/long double/char)大小,所以我写了这段代码:

printf("short\t\t%d\n", sizeof(short));    
printf("int\t\t%d\n", sizeof(int));
printf("long\t\t%d\n", sizeof(long));
printf("float\t\t%d\n", sizeof(float));
printf("double\t\t%d\n", sizeof(double));  
printf("long double\t%d\n", sizeof(long double));    
printf("char\t\t%d\n", sizeof(char));   
Run Code Online (Sandbox Code Playgroud)

但输出是:

type            bytes
short           512
int             512
long            1024
float           1024
double          1024
long double     1024
char            256
Run Code Online (Sandbox Code Playgroud)

为什么字节数如此之大?

不应该是2,8,......?

c sizeof

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

使用int而不是size_t索引来访问向量元素的性能降低了吗?

如果我使用intindex来访问vector元素,它会将整数转换为size_t,然后调用operator[](size_t)函数吗?是否有任何性能下降?

c++ int vector size-t

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

向量和函数练习

我有一个关于这个程序的问题。我是编程和 C++ 的初学者,我试图弄清楚两件事。

  1. 为什么这个程序没有编译(错误:使用未初始化的内存“总计” - 我将它定义为一个变量??)。

  2. 有人能解释一下 main ( sumUpTo)之外的函数是如何工作的吗?具体& vectotal,因为我从来没有见过他们。谢谢。

/* 1) read in numbers from user input, into vector    -DONE
    2) Include a prompt for user to choose to stop inputting numbers - DONE
    3) ask user how many nums they want to sum from vector -
    4) print the sum of the first (e.g. 3 if user chooses) elements in vector.*/

#include <iostream>
#include <string>
#include <vector>
#include <numeric> //for accumulate

int …
Run Code Online (Sandbox Code Playgroud)

c++ stdvector c++-standard-library

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