[C++]配列の全要素に特定の値を掛け算するには?

C++

どうも、ちょげ(@chogetarou)です。

配列(array)の全要素に特定の値を掛け算する方法を紹介します。

スポンサーリンク

方法

配列(array)の全要素に特定の値を掛け算する方法は、2つあります。

for文

ひとつは、for文を使う方法です。

まず、for文で配列をループします。

そして、ループ処理で、配列の要素に「*」で値を掛けます。

//myArray=対象の配列, T=要素の型,  value=値
int length = sizeof(myArray) / sizeof(T);
for (int i = 0; i < length; ++i) {
    myArray[i] *= value;
}

上記のfor文は、配列の全要素に特定の値を掛け算します。

上記のコードでは、配列のインデックスをループしています。

配列の要素をループして、掛け算する方法もあります。

//要素をループする場合
//T=要素の型, myArray=対象の配列
for (T& item: myArray) {
    item *= value;
}

使用例

#include <iostream>
using namespace std;

int main(void){
    
    int nums[6] = { 11, 2, 8, 20, 7, 4 };
    
    int length = sizeof(nums) / sizeof(int);
    int value = 10;
    for (int i = 0; i < length; ++i) {
    	nums[i] *= value;
    }
    
    for(int item: nums) {
        cout << item << endl;
    }
    
    return 0;
}
出力:
110
20
80
200
70
40

for_each()

もうひとつは、for_each()を使う方法です。

まず、algorithmをインクルードします。

#include <algorithm>

次に、for_each()を呼び出します。

for_each()の第1引数に配列のイテレータの先頭、第2引数に配列のイテレータの末尾を指定します。

for_each()の第3引数に、引数で要素の参照を受け取る関数を指定します。

そして、関数の処理で、引数に「*」で値を掛けます。

//myArray=対象の配列, T=要素の型, value=足す値
for_each(begin(myArray), end(myArray), [](T& item) { item *= value; });

上記のfor_each()は、配列の全要素に特定の値を掛け算します。

使用例

#include <iostream>
#include <algorithm>
using namespace std;

int main(void){
    
    int nums[6] = { 11, 2, 8, 20, 7, 4 };
    
    for_each(begin(nums), end(nums), [](int& item) { item *= 100; });
    
    for(int item: nums) {
        cout << item << endl;
    }
    
    return 0;
}
出力:
1100
200
800
2000
700
400

まとめ

配列(array)の全要素に特定の値を掛け算する方法は、次の2つです。

  • for文を使う方法
    int length = sizeof(myArray) / sizeof(T);
    for (int i = 0; i < length; ++i) { myArray[i] *= value; }
  • for_each()を使う方法
    for_each(begin(myArray), end(myArray), [](T& item) { item *= value; });

コメント

タイトルとURLをコピーしました