我看到用这种类型定义的变量,但我不知道它来自何处,也不知道它的目的是什么.为什么不使用int或unsigned int?(其他"类似"类型呢?Void_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?它有关系吗?
如果我使用sizeof运算符并size_t在我的代码中使用,我是否必须包含stddef.h?我没有包含stddef.h,我的代码在没有警告的情况下编译MVS2008和Borland C++ BuilderX.
非常感谢...
请考虑以下代码
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>,但有没有办法重新编写模板部分,以便它可以使用数字文字的默认解释?
作为初学者,我真的很困惑size_t.我可以使用int,float或其他类型.为什么还要声明size_t类型.我感觉不到它的优点.我看过一些页面,但我仍然无法理解.
memset的原型是void *memset(void *s, int c, size_t n);.那么为什么第三个参数是类型的size_t?memset只是一个例子,我想要更多的一般原因.提前致谢.
在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)
如果我按下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) 我想找出(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,......?
如果我使用intindex来访问vector元素,它会将整数转换为size_t,然后调用operator[](size_t)函数吗?是否有任何性能下降?
我有一个关于这个程序的问题。我是编程和 C++ 的初学者,我试图弄清楚两件事。
为什么这个程序没有编译(错误:使用未初始化的内存“总计” - 我将它定义为一个变量??)。
有人能解释一下 main ( sumUpTo)之外的函数是如何工作的吗?具体& vec和total,因为我从来没有见过他们。谢谢。
/* 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)