私は現時点で脳のおならを持っており、配列をとり、関数の半分を関数に渡すための高速な方法を探しています。いくつかの言語で配列Aが10個ある場合、A [5:]のようなものを関数に渡して処理することができます。 C++にも同様の構文がありますか?明らかに、私はループ関数を避けて並べ替えたい。C++で配列からサブ配列を取得する方法はありますか?
7
A
答えて
7
はい。プレーンCではポインタを使用しますが、C++では任意の種類のイテレータを使用できます(ポインタはイテレータと見なすことができます)。
template<typename Iter>
void func(Iter arr, size_t len) { ... }
int main() {
int arr[10];
func(arr, 10); // whole array
func(arr, 5); // first five elements
func(arr + 5, 5); // last five elements
std::vector<Thing> vec = ...;
func(vec.begin(), vec.size()); // All elements
func(vec.begin(), 5); // first five
func(vec.begin() + 5, vec.size() - 5); // all but first 5
return 0;
}
典型的なトリックは、配列の最初の要素へのポインタを渡し、その後、配列の長さを渡すために別の引数を使用することです。残念ながら、境界チェックはありませんので、それを正しく取得するように注意する必要があります。そうしないと、あなたの記憶に落書きが生じます。
半開きの範囲を使用することもできます。これは最も一般的な方法です。標準ライブラリの多くの関数(std::sort
など)はこのように動作します。
template<class Iter>
void func(Iter start, Iter end) { ... }
int main() {
int arr[10];
func(arr, arr + 10); // whole array
func(arr, arr + 5); // first five elements
func(arr + 5, arr + 10); // last five elements
std::vector<Thing> vec = ...;
func(vec.begin(), vec.end()); // whole vector
func(vec.begin(), vec.begin() + 5); // first five elements
func(vec.begin() + 5, vec.end()); // all but the first five elements
return 0;
}
ここでも、境界チェックはありません。
関連する問題
- 1. 配列の配列から値を取得する方法は?
- 2. php配列からサブ配列を取得
- 3. 2D double [] []配列からサブ配列を取得
- 4. Cの配列からサブ配列を作成する最適な方法
- 5. インデックス配列を使用してnumpy配列からサブ配列を得る方法をベクトル化するには
- 6. 2D配列から1D列配列と1D行配列を取得する方法は? (C#.NET)
- 7. JSON配列から文字列配列を取得する方法は?
- 8. 多次元配列から配列を取り出す方法
- 9. C#Webアプリケーションのデータセットから日付を配列で取得する方法はありますか
- 10. Perlでハッシュで配列名を取得する方法はありますか?
- 11. 各サブ配列から特定の要素を取得する
- 12. 2D Java配列から列を取得する方法は?
- 13. スレッドを使用してサブ配列を取得する方法
- 14. jpeg画像配列をunsigned char *配列から取得する方法は?
- 15. 与えられたストライド/ stepsizeでnumpy配列からサブ配列を取る
- 16. JSループからAJAXレスポンス配列までの配列、データの取得方法は?
- 17. 配列内の配列から値を取得しますか?
- 18. 文字列の配列からランダムオブジェクトを取得する方法
- 19. 2D配列の一部を取得する方法はありますか?
- 20. javaに配列の名前を取得する方法はありますか?
- 21. サブ文書のフィールド値を配列から取り出す方法
- 22. C/Objective-Cで配列のサイズを取得する方法はありますか?
- 23. Cの文字列配列から文字列を作成する簡単な方法はありますか?
- 24. typescriptの配列から値を取得する方法は?
- 25. JavaScript配列からキー名を取得する方法は?
- 26. 配列からランダムな要素を取得する方法は?
- 27. mongoDBコレクションから配列を取得する方法は?
- 28. Backbone.js - コレクションからオブジェクトリテラルの配列を取得する方法は?
- 29. Angular2:ルータからパス配列を取得する方法は?
- 30. フォームからオブジェクトの配列を取得する方法は?
おそらく、あなたの関数はイテレータを取るべきです。 – chris
C++に配列の値がないため、配列をC++の関数に渡すことはできません。あなたの機能は実際に何をしていますか? – melpomene
私はint [] a = {1,2,3,4,5,6,7,8,9,10}の配列を持っています。私は次に、サブ配列int [] a1 = {6,7,8,9,10}を得る方法を探しています。 –