相关疑难解决方法(0)

在C++中std :: vector与std :: array

C++中的a std::vector和a有什么区别std::array?什么时候应该优先于另一个?各自的优点和缺点是什么?我的所有教科书都列出了它们是如何相同的.

c++ arrays vector

269
推荐指数
5
解决办法
12万
查看次数

有人可以解释这个模板代码,它给我一个数组的大小?

template<typename T, size_t n>
size_t array_size(const T (&)[n])
{
    return n;
}
Run Code Online (Sandbox Code Playgroud)

我没有得到的部分是这个模板函数的参数.当我通过数组时,数组会发生什么,它给出n了数组中元素的数量?

c++ arrays size templates

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

这个"数组大小"模板功能如何工作?

可能的重复:
有人可以解释这个给我数组大小的模板代码吗?
函数模板中的魔术参数......

有人可以解释这段代码的工作原理吗 我知道这段代码的目的是获取数组的长度,但我不知道这段代码是如何工作的:

template<typename T, int size>
int GetArrLength(T(&)[size]){return size;}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ arrays size templates sizeof

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

如何找到int []的大小?

我有

int list[] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

如何获得大小list

我知道对于char数组,我们可以strlen(array)用来查找大小,或者'\0'在数组末尾检查.


我尝试sizeof(array) / sizeof(array[0])了一些答案,但它只适用于主?例如:

int size(int arr1[]){
    return sizeof(arr1) / sizeof(arr1[0]);
}

int main() {
    int list[] = {1, 2, 3};

    int size1 = sizeof(list) / sizeof(list[0]); // ok
    int size2 = size(list_1); // no
    // size1 and size2 are not the same
}
Run Code Online (Sandbox Code Playgroud)

为什么?

c++ arrays

43
推荐指数
6
解决办法
16万
查看次数

这个数组大小模板如何工作?

我遇到了这个片段

template <typename T, size_t N>  
char (&ArraySizeHelper(T (&array)[N]))[N];  
#define arraysize(array) (sizeof(ArraySizeHelper(array))) 
Run Code Online (Sandbox Code Playgroud)

在这篇文章http://software.intel.com/en-us/articles/pvs-studio-vs-chromium/

我见过其他模板做同样的事情,比如这个

使用模板获取数组的大小和结束地址

我理解这些,但我一直遇到这个困难.

任何帮助,将不胜感激.

c++ templates metaprogramming

16
推荐指数
2
解决办法
6059
查看次数

sizeof运算符的问题

由于我想在函数中动态找到数组大小,我使用了sizeof运算符.但我有一些意想不到的结果.这是一个演示程序,向您展示,我想做什么.

//------------------------------------------------------------------------------------------
#include <iostream>

void getSize(int *S1){

    int S_size = sizeof S1/sizeof(int);
    std::cout<<"array size(in function):"<<S_size<<std::endl;
}

int main(){

    int S[]={1,2,3,2,5,6,25,1,6,21,121,36,1,31,1,31,1,661,6};
    getSize(S);
    std::cout<<"array size:"<<sizeof S/sizeof(int)<<std::endl;
    return 0;
}
//------------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

编译命令:g ++ demo1.cc -o demo1 {fedora 12}

输出:

array size(in function):2
array size:19
Run Code Online (Sandbox Code Playgroud)

请解释一下,为什么会这样.可以做些什么来解决这个问题.

c++ arrays sizeof

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

标签 统计

c++ ×6

arrays ×5

templates ×3

size ×2

sizeof ×2

metaprogramming ×1

vector ×1