C++에서 지수화하는 방법

Jinku Hu 2023년10월12일
  1. std::pow 함수를 사용하여 C++에서 숫자를 거듭 제곱 수준으로 올립니다
  2. 사용자 지정 함수를 사용하여 C++에서 숫자 제곱
  3. 사용자 지정 함수를 사용하여 C++에서 지수화 수행
C++에서 지수화하는 방법

이 기사에서는 C++에서 지수화를 수행하는 방법에 대한 다양한 방법을 보여줍니다.

std::pow 함수를 사용하여 C++에서 숫자를 거듭 제곱 수준으로 올립니다

std::pow 함수는 주어진 밑수의 거듭 제곱을 계산하는 데 사용할 수 있습니다. 여기서n은 정수 또는 부동 소수점 숫자 일 수 있습니다. 이 함수에는 프로그래머가 처리해야하거나 C++ <cmath>라이브러리 헤더에서 제공하는 별도의 함수를 사용하여 구현해야하는 다양한 예외 및 특수 사례가 있습니다. 예를 들어 pow는 음수의 근을 계산하는 데 사용할 수 없습니다. 대신 std::sqrt또는 std::cbrt를 사용해야합니다. 다음 예에서는int 벡터의 각 요소에 대한 큐브 값을 찾습니다.

#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>

using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;

template <typename T>
void PrintVector(vector<T> &arr) {
  copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
  cout << endl;
}

constexpr int POWER = 3;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  PrintVector(arr);
  for (auto &item : arr) {
    item = pow(item, POWER);
  }
  PrintVector(arr);

  return EXIT_SUCCESS;
}

출력:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 8; 27; 64; 125; 216; 343; 512; 729; 1000;

사용자 지정 함수를 사용하여 C++에서 숫자 제곱

이전 방법 외에도 pow함수를 사용하여 다양한 사용자 지정 함수를 구현하여 표준 함수를 확장 할 수 있습니다. 이 예는vector 컨테이너를 가져와 해당 요소를 제곱하는Pow2Vector 함수를 보여줍니다. PrintVector 함수 템플릿은 벡터 요소를 콘솔에 출력하고 모든 내장 데이터 유형의 벡터를 받아 들일 수 있습니다.

#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>

using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;

template <typename T>
void PrintVector(vector<T> &arr) {
  copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
  cout << endl;
}

template <typename T>
vector<T> &Pow2Vector(vector<T> &arr) {
  for (auto &i : arr) {
    i = pow(i, 2);
  }
  return arr;
}

constexpr int POWER = 3;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

  PrintVector(Pow2Vector(arr));

  return EXIT_SUCCESS;
}

출력:

1; 4; 9; 16; 25; 36; 49; 64; 81; 100;

사용자 지정 함수를 사용하여 C++에서 지수화 수행

이전 방법의 계속으로, 추가 인덱스 값 매개 변수를 허용하도록 기본 기능을 조정할 수 있습니다. 이런 식으로 우리는 기본적으로 벡터의 주어진 요소를 우리가 제공 한 힘으로 취하는 프로그램을 구현했습니다. 템플릿 유형 추론이 작동하려면float/double 변수를 지수 값으로 초기화 한 다음PowVector 함수에 전달해야합니다.

#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>

using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;

template <typename T>
void PrintVector(vector<T> &arr) {
  copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
  cout << endl;
}

template <typename T>
vector<T> &PowVector(vector<T> &arr, T power) {
  for (auto &i : arr) {
    i = pow(i, power);
  }
  return arr;
}

constexpr int POWER = 3;

int main() {
  vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  vector<float> arr2 = {1.2, 2.3, 3.2, 4.5, 5.5, 6.2, 7.1, 8.2, 9.0, 10.1};

  float power = 2.0;
  PrintVector(PowVector(arr, 5));
  PrintVector(PowVector(arr2, power));

  return EXIT_SUCCESS;
}

출력:

1; 32; 243; 1024; 3125; 7776; 16807; 32768; 59049; 100000;
1.44; 5.29; 10.24; 20.25; 30.25; 38.44; 50.41; 67.24; 81; 102.01;
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Math