---
title: FindNearest
description: "在表中查找最接近指定值向量的元素集合。查找到的每个元素及其索引分别存储在向量outVals和outIndexes中。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0152.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0152.html
indexId: e18b0dfaf0be9833347158c4f68fce0e0d5a35e709fb5aac4687248ccf71f6f775
---
# FindNearest

在表中查找最接近指定值向量的元素集合。查找到的每个元素及其索引分别存储在向量outVals和outIndexes中。

其中表中元素必须满足条件：table[n] ≤table[n+1]。最接近指的是：min(|inVals[k] -table[n]|)。

函数接口声明如下：

HmppResult HMPPS_FindNearest_16u(const uint16_t *inVals, uint16_t *outVals, int32_t *outIndexes, int32_t len, const uint16_t *table, int32_t tblLen);

#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| inVals | 指向指定元素向量的指针。 | 非空 | 输入 |
| outVals | 指向查找结果元素向量的指针。 | 非空 | 输出 |
| outIndexes | 指向查找结果元素索引向量的指针。 | 非空 | 输出 |
| len | inVals向量的长度 | (0, INT\_MAX] | 输入 |
| table | 指向单调不减向量表。 | 非空 | 输入 |
| tblLen | 向量表的长度。 | (0, INT\_MAX] | 输入 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NULL\_PTR\_ERR | table、inVals、outVals、outIndexes这四个入参中存在空指针。 |
| HMPP\_STS\_SIZE\_ERR | tblLen、len小于或等于0。 |


#### 示例

```
#define  TABLE_SIZE_T 13
#define  BUFFER_SIZE_T 11
void FindNearestExample()
{
uint16_t table[TABLE_SIZE_T] = {32, 434, 486, 545, 766, 976, 1222, 1534, 1687, 3452, 8556, 32452, 56422};
uint16_t inVals[BUFFER_SIZE_T] = {32, 545, 766, 876, 1222, 1334, 1687, 3452, 4556, 32452, 45422};
uint16_t outVals[BUFFER_SIZE_T];
int32_t outIndexes[BUFFER_SIZE_T];
HmppResult result = HMPPS_FindNearest_16u(inVals, outVals, outIndexes, BUFFER_SIZE_T, table, TABLE_SIZE_T);
if (result == HMPP_STS_NO_ERR) {
printf("outVals :");
for (int i = 0; i < BUFFER_SIZE_T; i++) {
printf(" %d", outVals[i]);
}
printf("\n");
printf("outIndexes:");
for (int i = 0; i < BUFFER_SIZE_T; i++) {
printf(" %d", outIndexes[i]);
}
printf("\n");
}
}
```

运行结果：

```
outVals : 32 545 766 976 1222 1222 1687 3452 3452 32452 56422
outIndexes: 0 3 4 5 6 6 8 9 9 11 12
```
