タグ付けされた質問 「arrays」

配列は、それぞれが1つ以上のインデックスで識別される要素(値、変数、または参照)のコレクションで構成される、順序付けられた線形データ構造です。配列の特定のバリアントについて質問する場合は、代わりに次の関連タグを使用してください:[vector]、[arraylist]、[matrix]。このタグを使用する場合、プログラミング言語に固有の質問では、使用するプログラミング言語で質問にタグを付けます。

3
なぜ配列の次元はその型の一部なのですか?
C ++入門書を読んでいるときに、「配列内の要素の数は配列の型の一部です。」という文に出くわしました。だから私は次のコードを使用して調べたいと思いました: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c std::cout<<typeid(Array2).name()<<std::endl; //prints A6_c return 0; } 興味深いことに、2つの配列のtypeidの結果は、なんらかの違いがあることを示しています。 舞台裏で何が起こっているのですか? 配列のサイズを含む型を持つ必要があるのはなぜですか?サイズを変えてはいけないというだけのことですか? これは配列の比較にどのように影響しますか? コンセプトを深く理解したいだけ。
14 c++  arrays  c++11 

1
1 MB以上のJavaバイト配列がRAMの2倍を占める
Windowsの10の下のコードを実行している/ OpenJDKの11.0.4_x64は出力として生成used: 197とexpected usage: 200。これは、100万要素の200バイト配列が約100を占めることを意味します。200MB RAM。すべて元気です。 コード内のバイト配列割り当てをnew byte[1000000]からnew byte[1048576](つまり、1024 * 1024要素に)変更すると、出力used: 417ととして生成されますexpected usage: 200。一体何ですか? import java.io.IOException; import java.util.ArrayList; public class Mem { private static Runtime rt = Runtime.getRuntime(); private static long free() { return rt.maxMemory() - rt.totalMemory() + rt.freeMemory(); } public static void main(String[] args) throws InterruptedException, IOException { int …

2
このJava 8ストリームのcollect()メソッドを理解するにはどうすればよいですか?
私はint配列をListに変換しようとしていましたが、Java 8 Streamを使用するというなじみのないルートを取り、これを思いつきました Arrays.stream(arr).boxed().collect(Collectors.toList()); 私はまだこの行を完全に理解するのにまだ苦労しています、ほとんどの場合、 Collectors.toList()この場合、なぜArrayList<Integer>実装Listインターフェースが返されるのですか?なぜ、LinkedList<Integer>またはListインターフェイスに準拠していない他の総称クラスですか?ここでは、APIリストのセクションでArrayListについて簡単に説明している以外は何も見つかりません。 左のパネルは どういう意味ですか?明らかに、一般的な戻り値の型です(このコードでは)。そして、私はメソッドのジェネリック型引数だと思いますが、それらはどのように指定されていますか?Collectorインターフェースのドキュメントを調べましたが、吸収できませんでした。 Stream.collect()RArrayList<Integer><R, A>

3
Java 14のレコードと配列
次のコードがあるとします: public static void main(String[] args) { record Foo(int[] ints){} var ints = new int[]{1, 2}; var foo = new Foo(ints); System.out.println(foo); // Foo[ints=[I@6433a2] System.out.println(new Foo(new int[]{1,2}).equals(new Foo(new int[]{1,2}))); // false System.out.println(new Foo(ints).equals(new Foo(ints))); //true System.out.println(foo.equals(foo)); // true } 配列のことを、明らかに、そうですtoString、equals(、代わりに静的メソッドのメソッドが使用されているArrays::equals、Arrays::deepEquals またはArray::toString)。 したがって、Java 14 Records(JEP 359)は配列ではうまく機能しないと思います。それぞれのメソッドはIDEで生成する必要があります(少なくともIntelliJでは、デフォルトで「便利な」メソッドを生成します。つまり、静的メソッドを使用します)でArrays)。 または他の解決策はありますか?

1
C ++ 20以降、割り当てられたストレージでのポインター演算は許可されていますか?
C ++ 20標準では、配列型は暗黙の存続時間型であると言われています。 非暗黙的なライフタイムタイプの配列を暗黙的に作成できるということですか?このような配列を暗黙的に作成しても、配列の要素は作成されませんか? このケースを考えてみます //implicit creation of an array of std::string //but not the std::string elements: void * ptr = operator new(sizeof (std::string) * 10); //use launder to get a "pointer to object" (which object?) std::string * sptr = std::launder(static_cast<std::string*>(ptr)); //pointer arithmetic on not created array elements well defined? …

3
JSON形式の配列の値とキーを比較して新しい配列を作成するにはどうすればよいですか?Angular 5の
これが私の最初のJSON配列フォーマットです。 this.columnNames = [ {field : "Name"}, {field : "Address"}, {field : "Age"} ]; これが私の最初のJSON配列フォーマットです。 this.rowData = [ {Name : "Praveen",Address : "aiff",Age : "12",w : "1",e : "8"}, {Name : "Akashay",Address : "xvn",Age : "15",w : "2",e : "7"}, {Name : "Bala",Address : "hjk",Age : "16",w : "3",e : …

3
Cでの文字列の定義の詳細は何ですか?
私はクラスの1つに対する宿題の質問に回答することになっています。具体的には、Cの特定の配列が文字列と見なされるかどうかを言うことになっています。この記事(https://www.geeksforgeeks.org/strings-in-c-2/)に基づいて、文字列は末尾にヌルターミネータが付いた文字の配列であることを知っています。 私の主なハングアップは、次のような配列について尋ねる質問の一部です。 char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' }; これは明らかに、末尾にヌル終了文字がある文字の配列です。ただし、途中にnullの終了文字があるため、文字列と見なされますか?それは文字列にどのように影響しますか? 編集:コメントに基づいて、私は質問の実際の表現を提供しました: 「次の配列のうち、strcpy()、strncpy()、strcmp()、strncmp()、および同様の文字列関数(すべての適用を示す)への引数として使用するために、「文字列」と見なすことができるのはどれですか? " 編集:質問が曖昧に書かれているようだったので(数人が指摘したように)、それについて教授にメールを送りました。誰かが気になるなら、彼は私に「はい、それは文字列です。重要なのはnull文字があることです。しかし、もちろんそれはすべての文字列操作に影響します。文字列はnull文字で終わります。」

1
インスタンスを作成せずにstd :: array <T、N>の要素数を取得する方法は?
はありますがstd::array&lt;T, N&gt;::size()、静的ではないため、のインスタンスが必要ですstd::array。配列のインスタンスを作成せずに、それが返す値(Nのstd::array&lt;T, N&gt;)を取得する方法はありますか?通常の配列では、を使用することもできましたがsizeof、sizeof(std::array&lt;T, N&gt;) == N * sizeof(T)本当であるという保証はありません。
9 c++  arrays  c++11  sizeof 

2
プリミティブ型に関するコードの重複を回避するにはどうすればよいですか?
バックグラウンド ビット入力ストリームは、バイトの配列に支えられています。そのバイト配列からさまざまな強制プリミティブ配列に読み取るメソッドがいくつかあります。 問題 コードが重複しています。Javaはプリミティブ型のジェネリックを欠いているので、おそらく繰り返しは避けられません。 コード 反復的なコードは、次の方法で明らかになります。 @Override public long readBytes(final byte[] out, final int offset, final int count, final int bits) { final int total = offset + count; assert out != null; assert total &lt;= out.length; final long startPosition = position(); for (int i = offset; i &lt; total; …

8
最も人口の多い年を見つける(最も効率的なソリューション)
2つの配列があるとします。$births誰かが生まれた時期を示す誕生年$deathsのリストと、誰かが死亡した時期を示す死年のリストが含まれている場合、人口が最も多かった年をどのように見つけることができますか? たとえば、次の配列があるとします。 $births = [1984, 1981, 1984, 1991, 1996]; $deaths = [1991, 1984]; 人口が最も多かった年はであるはずです1996。なぜなら3、その年の間に人々は生きていたからです。それは、それらの年の中で最も高い人口数でした。 これについて、実行中の数学は次のとおりです。 | 誕生| 死| 人口| | ------- | ------- | ------------ | | 1981 | | 1 | | 1984年 | 2 | | 1984年 1984年 2 | | 1991 | 1991 | 2 | | …

7
このコードブロックを改善および短縮するにはどうすればよいですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3か月前に閉鎖。 この関数は、「GTCA」などのDNAの文字列を取り、正しく一致するDNAペアを含む配列を返します。 function pairDNA(dna) { const pairs = [] for (let i = 0; i &lt; dna.length; i ++) { if (dna[i] === "C" | dna[i] === "c") { pairs.push("CG"); } else if (dna[i] === "G"| dna[i] === "g") { pairs.push("GC"); } else if (dna[i] === "T"| dna[i] …

2
安全な暗号化キーのstd :: arrayにカスタムアロケーターを使用できますか?
私std::arrayは完全にスタックに割り当てられていることを知っていますが、この質問は2つのことを必要とするセキュリティの懸念によって動機付けられています: のデータはstd::array破棄時にゼロ化またはランダム化されます のデータはロックstd::arrayされるため、クラッシュやスワップメモリ​​のいずれでもディスクに移動することはありません 通常、でstd::vectorの解決策は、これらのことを行うカスタムアロケータを作成することです。ただし、の場合std::array、これを行う方法がわからないため、この質問についてもわかりません。 私ができる最善のことはこれです: template &lt;typename T, std::size_t Size&gt; struct SecureArray : public std::array&lt;T, Size&gt; { static_assert(std::is_pod&lt;T&gt;::value, "Only POD types allowed") static_assert(sizeof(T) == 1, "Only 1-byte types allowed") virtual ~SecureArray() { std::vector&lt;uint8_t&gt; d = RandomBytes(Size); // generates Size random bytes std::memcpy(this-&gt;data(), d.data(), Size); } } ただし、これには明らかにメモリロックが欠けstd::arrayてstd::arrayおり、そもそも使用することで得られるパフォーマンススキームが複雑になります。 より良い解決策はありますか?

5
Markdownの小さなサブセットをReactコンポーネントに解析する方法は?
Markdownの非常に小さなサブセットと、Reactコンポーネントに解析したいカスタムHTMLがあります。たとえば、次の文字列を有効にしたいと思います。 hello *asdf* *how* _are_ you !doing! today 次の配列に: [ "hello ", &lt;strong&gt;asdf&lt;/strong&gt;, " ", &lt;strong&gt;how&lt;/strong&gt;, " ", &lt;em&gt;are&lt;/em&gt;, " you ", &lt;MyComponent onClick={this.action}&gt;doing&lt;/MyComponent&gt;, " today" ] そして、それをReactレンダー関数から返します(Reactは配列をフォーマット済みHTMLとして適切にレンダリングします) 基本的に、非常に限られたMarkdownのセットを使用して、テキストをスタイル付きコンポーネント(場合によっては自分のコンポーネント!)に変換するオプションをユーザーに提供したいと思います。 それは、dangerouslySetInnerHTMLには賢明ではなく、外部依存関係を持ち込みたくありません。これらはすべて非常に重いため、基本的な機能だけが必要なためです。 私は現在このようなことをしていますが、それは非常に壊れやすく、すべてのケースで機能するわけではありません。より良い方法があるかどうか私は思っていました: function matchStrong(result, i) { let match = result[i].match(/(^|[^\\])\*(.*)\*/); if (match) { result[i] = &lt;strong key={"ms" + i}&gt;{match[2]}&lt;/strong&gt;; } return …

7
フィルター法を使用した後、2つの配列を組み合わせる
ユーザーによってカートに追加された製品が一覧表示されているカートページが表示されたままになっています。2つのアレイがあります。1つは製品の詳細です。 productDetails: [ { productID: 1, productTitle: 'Product Title 1', productPrice: 2000 }, { productID: 2, productTitle: 'Product Title 2', productPrice: 5000 }, { productID: 3, productTitle: 'Product Title 3', productPrice: 1000 }, { productID: 4, productTitle: 'Product Title 4', productPrice: 10000 } ], ユーザーのみが選択したproductIDと数量を持つカート製品の詳細を含む別の製品。 cartProducts: [ { productID: 1, …

4
sizeofは、配列へのポインターのこの逆参照でどのように機能しますか?
ここに私は4つの整数のptr配列へのポインターがarrあります。ptr配列全体を指します。ptr[0]または*ptr配列の最初の要素を指すため、1を追加して配列ptr[0]の2番目の要素のアドレスを取得します。 sizeof(ptr[0])(ptr[0]配列の最初の要素へのポイントとして)最初の要素のみのサイズである4バイトではなく、配列全体のサイズが16バイトになる理由を理解できません。 int arr[4] = {0, 1, 2, 3}; int (*ptr)[4] = &amp;arr; printf("%zd", sizeof(ptr[0])); //output is 16
9 c  arrays  pointers 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.