寻找数组的最大值/最小值&&获取数组特定位置指针

昨晚出糗了,发现我虽然点了一部分并行计算、计算机底层、编程语言细节、程序调试方面的技能点,但是在基础编程方面其实很弱。这是本科期间刷题太少所落下的毛病,应该增强一下,特此长期收集总结一下一些非常常用的基本函数。

1.寻找数组的最大值/最小值

T findMax(T* arr, int N)
{
	//注意这里,昨晚就是因为顺手就写int,心急起来眼瞎才出糗的
	T max = arr[0];
	if (0 == N)
		return max;
	for (int i = 1; i < N; ++i)
	{
		if (arr[i] > max)
			max = arr[i];
	}
	return max;
}

2.获取数组中特定位置的指针

//1.直接采用指针加减法
T* p = arr + pos;

//2.采用下标访问 + 取址方法
//优先级问题不用担心,[]优先级高于&
T* p = &a[pos];

//3.获取矩阵特定行(一维数组形式)
T* mrow = matrix + r * N_col;
T* mrow = matrix[r * N_col]; 
//ps.为什么动态矩阵要用一维形式存储?用指针数组模拟二维矩阵不行吗?
//这涉及到TLB和cache,指针数组形式的矩阵,行与行之间内存分布不是连续的
//这会使每一行可能都分布在不同页中,整个矩阵会占据比一维形式多得多的内存页
//这样的矩阵对于TLB和cache都是相当不友好的
//有一个解决办法,先创建一个一维数组形式的矩阵,然后再用指针数组分别指向每行
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值