---
title: Select
description: "给出用于判断的条件张量cond以及长度length，从两个输入张量t，e中选择元素，将比较结果存储于输出张量output。例如："
url: https://www.hikunpeng.com/document/detail/zh/boostsra/srainference/SRA_Inference/kunpengsra_inference_16_0023.html
sourcePath: /source/zh/boostsra/srainference/SRA_Inference/kunpengsra_inference_16_0023.html
indexId: 40fe24b312b8abddfae38cbec8ca0a0136187513c6f9dd6f7b9b35c7121abe0480
---
# Select

#### 场景说明

给出用于判断的条件张量cond以及长度length，从两个输入张量t，e中选择元素，将比较结果存储于输出张量output。例如：

```
cond: [true,false,true,true]
t: [5,7,15,3]
e: [8,6,20,0]
output: [5,6,15,3]
length: 4
```


#### 代码示例

```
#include <cmath>
#include <random>
#include <cstdint>
#include <iostream>
#include "ktfop.h"
void KtfopLog(int level, const char *message)
{
  std::cout << level << ' ' << message << std::endl;
}
int main()
{
  using namespace ktfop;
  SetExternalLogFunc(KtfopLog);
  size_t length = 4;
  bool condArray[] = {true, false, true, true};           //初始化判断条件数组
  int64_t tArray[] = {5, 7, 15, 3};                       //初始化若判断条件为真，则赋值给输出的数组
  int64_t eArray[] = {8, 6, 20, 0};                       //初始化若判断条件为假，则赋值给输出的数组
  bool *cond = condArray;                                
  int64_t *t = tArray;                                   
  int64_t *e = eArray;                                   
  auto *output = new int64_t[4];                          //为输出数组分配内存空间
  int ret = -1;
  ret = Select(cond, t, e, output, length);        //调用Select算子，结果存储于output数组 [5, 6, 15, 3]
  std::cout << "output: [";
  for (int i = 0; i < 4; ++i) {
      std::cout << output[i];
      if (i < 3) {
          std::cout << ", ";
      }
  }
  std::cout << "]" << std::endl;
  ret = Select(nullptr, t, e, output, length);     //打印日志"ERROR Parameter verification failed for the Select Op."
  delete[] output;
}
```
