n次元ベクトル内に格納されている要素の数を取得します

ヘンゾサビク

私は2次元のベクトルを持っています:

let vec2d = vec![
    vec![1, 1, 1],
    vec![1, 1, 1],
];

この方法で保存された要素の合計を生成できます。

let mut n_vec_element: i32 = 0;

for i in vec2d.iter() {
    n_vec_element += i.len() as i32;
}

println!("2D vector elements :{}", n_vec_element); // prints 6

寸法を大きくすると、ループが長くなります。

let mut n_vec_element: i32 = 0;

let vec3d = vec![
    vec![
        vec![1, 3, 5 as i32],
        vec![2, 4, 6 as i32],
        vec![3, 5, 7 as i32],
    ],
    vec![
        vec![1, 3, 5 as i32],
        vec![2, 4, 6 as i32],
        vec![3, 5, 7 as i32],
    ]
];

for i in vec3d.iter() {

    // I must add another iter everytime I increment the dimension by 1.
    // Else, it returns the number of stored vector instead of the vector 
    // elements.

    for j in i.iter() { 
        n_vec_size += j.len() as i32;
    }
};

println!("3D vector elements :{}", n_vec_element); // prints 18

これを行うにはもっと簡潔な方法があるはずですが、私はまだそれを理解していません。最初はベクトルのlen()関数を使ってみましたが、上で述べたように、要素の代わりに格納されているベクトルの数を返します。

ボエチオス

そのために明示的なループは必要ありません。

let vec2d = vec![
    vec![1, 1, 1],
    vec![1, 1, 1],
];

let n_vec_element: usize = vec2d.iter().map(Vec::len).sum();

assert_eq!(n_vec_element, 6);

3Dベクトルの場合、同じことができます。

let vec3d = vec![
    vec![
        vec![1, 3, 5 as i32],
        vec![2, 4, 6 as i32],
        vec![3, 5, 7 as i32],
    ],
    vec![
        vec![1, 3, 5 as i32],
        vec![2, 4, 6 as i32],
        vec![3, 5, 7 as i32],
    ]
];

let n_vec_element: usize = vec3d.iter().flatten().map(Vec::len).sum();

assert_eq!(n_vec_element, 18);

4Dベクトルを使用すると、2flattenなどを配置できます


特殊化機能(つまり、夜間コンパイラー)を使用すると、これを独自の方法で一般化できます。

#![feature(specialization)]

trait Count {
    fn count(self) -> usize;
}

impl<T> Count for T {
    default fn count(self) -> usize {
        1
    }
}

impl<T> Count for T
where
    T: IntoIterator,
    T::Item: Count,
{
    fn count(self) -> usize {
        self.into_iter().map(|x| x.count()).sum()
    }
}

fn main() {
    let v = vec![1, 2, 3];
    assert_eq!(v.count(), 3);

    let v = vec![vec![1, 2, 3], vec![4, 5, 6]];
    assert_eq!(v.count(), 6);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonの2次元リストに格納されている特定の辞書値の数を取得します

分類Dev

ベクトルに格納されているインデックスのすべての要素を取得するにはどうすればよいですか?

分類Dev

ベクトルの要素がヒープに格納されているという事実を利用しますか?

分類Dev

Dplyr:外部変数をインデックスとして使用して列に格納されているベクトルの要素にアクセスしようとしています

分類Dev

FirestoreにFieldValueとして格納されている配列内の特定の要素を取得する方法

分類Dev

シンボル名がベクトルに格納されている式をプロットします

分類Dev

変数に格納されている要素に複数のイベントをバインドする

分類Dev

変数にすでに格納されているオブジェクトを使用して、クラスで特定の要素を検索します

分類Dev

変数に格納されている文字列からオブジェクトデータを取得します

分類Dev

変数に格納されているIDで入力ボックスの値を取得しますか?

分類Dev

ユーザー入力をベクトルに格納されている値と比較します

分類Dev

文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

分類Dev

STL-STLマップ内に格納されているベクトルに値を追加する

分類Dev

リンクリスト:SQLテーブルに格納されているチェーンリストの最初と最後の要素をクエリします

分類Dev

dynamodbのリスト要素を削除します。インデックスは変数に格納されている値です。

分類Dev

文字ベクトルに格納されている各データフレーム名に関数を適用します

分類Dev

別のリストに格納されているインデックスに従って、リストのリスト内の要素を置き換えます

分類Dev

ベクトルに格納されている文字列を印刷する

分類Dev

エラー、人の症状を処理する関数を作成し、それを「Y」または「N」としてベクトル文字列内に格納しようとすると、これが発生します

分類Dev

配列に格納されているグリッド内の隣接するセルを検索します(多次元ではありません)

分類Dev

配列内に格納されているオブジェクトプロパティを<ul>要素に表示しようとしています

分類Dev

変数に格納されている関数をオブジェクトリテラルのゲッターとして割り当てます

分類Dev

グループ名(groupbyから)を元のDataFrameの新しい列に格納するベクトル化された方法?

分類Dev

R、data.table:名前がベクトルに格納されているすべての列を合計します

分類Dev

変数に格納されている要素の最初の兄弟を選択します

分類Dev

オブジェクトをリストに格納し、R の文字ベクトルに格納されている名前を付ける

分類Dev

Rのリストに要素として格納されている関数にどのようにアクセスしますか?

分類Dev

異なるデータフレームの行の各値を、ベクトルに格納されている値で除算します

分類Dev

Python:テーブルの行の値(ベクトルに格納されている)を選択する方法は?

Related 関連記事

  1. 1

    Pythonの2次元リストに格納されている特定の辞書値の数を取得します

  2. 2

    ベクトルに格納されているインデックスのすべての要素を取得するにはどうすればよいですか?

  3. 3

    ベクトルの要素がヒープに格納されているという事実を利用しますか?

  4. 4

    Dplyr:外部変数をインデックスとして使用して列に格納されているベクトルの要素にアクセスしようとしています

  5. 5

    FirestoreにFieldValueとして格納されている配列内の特定の要素を取得する方法

  6. 6

    シンボル名がベクトルに格納されている式をプロットします

  7. 7

    変数に格納されている要素に複数のイベントをバインドする

  8. 8

    変数にすでに格納されているオブジェクトを使用して、クラスで特定の要素を検索します

  9. 9

    変数に格納されている文字列からオブジェクトデータを取得します

  10. 10

    変数に格納されているIDで入力ボックスの値を取得しますか?

  11. 11

    ユーザー入力をベクトルに格納されている値と比較します

  12. 12

    文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

  13. 13

    STL-STLマップ内に格納されているベクトルに値を追加する

  14. 14

    リンクリスト:SQLテーブルに格納されているチェーンリストの最初と最後の要素をクエリします

  15. 15

    dynamodbのリスト要素を削除します。インデックスは変数に格納されている値です。

  16. 16

    文字ベクトルに格納されている各データフレーム名に関数を適用します

  17. 17

    別のリストに格納されているインデックスに従って、リストのリスト内の要素を置き換えます

  18. 18

    ベクトルに格納されている文字列を印刷する

  19. 19

    エラー、人の症状を処理する関数を作成し、それを「Y」または「N」としてベクトル文字列内に格納しようとすると、これが発生します

  20. 20

    配列に格納されているグリッド内の隣接するセルを検索します(多次元ではありません)

  21. 21

    配列内に格納されているオブジェクトプロパティを<ul>要素に表示しようとしています

  22. 22

    変数に格納されている関数をオブジェクトリテラルのゲッターとして割り当てます

  23. 23

    グループ名(groupbyから)を元のDataFrameの新しい列に格納するベクトル化された方法?

  24. 24

    R、data.table:名前がベクトルに格納されているすべての列を合計します

  25. 25

    変数に格納されている要素の最初の兄弟を選択します

  26. 26

    オブジェクトをリストに格納し、R の文字ベクトルに格納されている名前を付ける

  27. 27

    Rのリストに要素として格納されている関数にどのようにアクセスしますか?

  28. 28

    異なるデータフレームの行の各値を、ベクトルに格納されている値で除算します

  29. 29

    Python:テーブルの行の値(ベクトルに格納されている)を選択する方法は?

ホットタグ

アーカイブ