比较数组是不是相等
比较数组是否相等
今天在C++ primer(第五版)上看见一个题目,比较两个数组是否相等,所以必须要知道这两个数组的大小,C++11中提供了begin()和end()两个函数,此题好解。但是这让我想到了在vs2010等不支持C++11的环境下怎样让系统确定两个数组的大小?本人才疏学浅,刚开始C++,望各路神仙指点!
------解决方案--------------------
如果你才开始学C++,就换《C++ Primer》第四版。
不要用第五版来浪费你的时间。
------解决方案--------------------
C,C++ 数组定义可见的地方,可以用sizeof 计算。
C++ 可以用模板计算
template <typename T ,int N>
int Arrsize(T (&)[N])
{return N;}
int a[10];
int a[]={1,2,3,3,5,4};
int arrsize = sizeof(a)/sizeof(a[0]);
只能见到声明的地方
比如
extern int a[];
(没有数组大小信息),不能计算出来。
如果有数组大小信息
比如
extern int a[10];
则可以计算出来。
------解决方案--------------------
2楼正解,用sizeof统计出字节数,然后用字节数除以该类型元素所占的字节数
例如:
今天在C++ primer(第五版)上看见一个题目,比较两个数组是否相等,所以必须要知道这两个数组的大小,C++11中提供了begin()和end()两个函数,此题好解。但是这让我想到了在vs2010等不支持C++11的环境下怎样让系统确定两个数组的大小?本人才疏学浅,刚开始C++,望各路神仙指点!
------解决方案--------------------
如果你才开始学C++,就换《C++ Primer》第四版。
不要用第五版来浪费你的时间。
------解决方案--------------------
C,C++ 数组定义可见的地方,可以用sizeof 计算。
C++ 可以用模板计算
template <typename T ,int N>
int Arrsize(T (&)[N])
{return N;}
int a[10];
int a[]={1,2,3,3,5,4};
int arrsize = sizeof(a)/sizeof(a[0]);
只能见到声明的地方
比如
extern int a[];
(没有数组大小信息),不能计算出来。
如果有数组大小信息
比如
extern int a[10];
则可以计算出来。
------解决方案--------------------
2楼正解,用sizeof统计出字节数,然后用字节数除以该类型元素所占的字节数
例如:
#include <iostream>
using namespace std;
int main()
{
int a[4] = { 0 };
cout << sizeof(a) / 4 << endl;
return 0;
}