คำถามติดแท็ก arrays

อาร์เรย์คือโครงสร้างข้อมูลเชิงเส้นที่เรียงลำดับซึ่งประกอบด้วยชุดขององค์ประกอบ (ค่าตัวแปรหรือการอ้างอิง) โดยแต่ละรายการจะถูกระบุด้วยดัชนีหนึ่งรายการหรือมากกว่า เมื่อถามเกี่ยวกับตัวแปรเฉพาะของอาร์เรย์ให้ใช้แท็กที่เกี่ยวข้องเหล่านี้แทน: [vector], [arraylist], [matrix] เมื่อใช้แท็กนี้ในคำถามที่เฉพาะเจาะจงกับภาษาการเขียนโปรแกรมให้แท็กคำถามด้วยภาษาการเขียนโปรแกรมที่ใช้

10
วิธีการจำลองการเริ่มต้นอาร์เรย์ C“ int arr [] = {e1, e2, e3, …}” พฤติกรรมกับ std :: array?
(หมายเหตุ: คำถามนี้เป็นคำถามเกี่ยวกับการไม่ต้องระบุจำนวนขององค์ประกอบและยังคงอนุญาตให้มีชนิดที่ซ้อนกันที่จะเริ่มต้นได้โดยตรง.) คำถามนี้กล่าวถึงการใช้งานที่เหลือสำหรับอาร์เรย์ C int arr[20];เช่น ในคำตอบของเขา @James Kanze แสดงหนึ่งในฐานที่มั่นสุดท้ายของอาร์เรย์ C มันเป็นลักษณะการเริ่มต้นที่ไม่ซ้ำกัน: int arr[] = { 1, 3, 3, 7, 0, 4, 2, 0, 3, 1, 4, 1, 5, 9 }; เราไม่ต้องระบุจำนวนองค์ประกอบไชโย! ทีนี้วนซ้ำด้วยฟังก์ชัน C ++ 11 std::beginและstd::endจาก<iterator>( หรือตัวแปรของคุณเอง ) และคุณไม่จำเป็นต้องคิดถึงขนาดของมัน ตอนนี้มีวิธีใดบ้าง (ที่เป็นไปได้ของ TMP) ในการบรรลุเป้าหมายเดียวกันstd::arrayหรือไม่? อนุญาตให้ใช้มาโครเพื่อทำให้ดูดีขึ้น :) ??? std_array = { …

25
ตรวจสอบว่าอาร์เรย์มีหลายมิติหรือไม่?
วิธีที่มีประสิทธิภาพมากที่สุดในการตรวจสอบว่าอาร์เรย์เป็นอาร์เรย์แบบแบนของค่าดั้งเดิมหรือเป็นอาร์เรย์หลายมิติได้อย่างไร มีวิธีการทำเช่นนี้โดยไม่วนลูปผ่านอาร์เรย์และทำงานis_array()ในแต่ละองค์ประกอบหรือไม่


4
Ruby Array วัตถุ find_first?
ฉันขาดอะไรบางอย่างในเอกสาร Array หรือไม่ ฉันมีอาร์เรย์ที่มีออบเจ็กต์มากถึงหนึ่งชิ้นที่ตรงตามเกณฑ์ที่กำหนด ฉันต้องการค้นหาวัตถุนั้นอย่างมีประสิทธิภาพ ความคิดที่ดีที่สุดที่ฉันมีจากเอกสารคือ: candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? แต่ฉันไม่พอใจด้วยเหตุผลสองประการ: นั่นselectทำให้ฉันสำรวจอาร์เรย์ทั้งหมดแม้ว่าเราจะสามารถประกันตัวได้หลังจากการโจมตีครั้งแรก ฉันต้องการรหัสบรรทัด (พร้อมเงื่อนไข) เพื่อทำให้ผู้สมัครแบนราบ การดำเนินการทั้งสองอย่างสิ้นเปลืองโดยรู้ล่วงหน้าว่ามีวัตถุที่น่าพอใจ 0 หรือ 1 ชิ้น สิ่งที่ฉันต้องการคือ: array.find_first(block) ซึ่งส่งคืนค่า nil หรืออ็อบเจ็กต์แรกที่บล็อกประเมินเป็น true โดยสิ้นสุดการข้ามผ่านที่อ็อบเจ็กต์นั้น ฉันต้องเขียนเองหรือไม่? วิธีการที่ยอดเยี่ยมอื่น ๆ ทั้งหมดใน Array ทำให้ฉันคิดว่ามันอยู่ที่นั่นและฉันไม่เห็นมัน
137 ruby  arrays  performance  find 

12
[] .forEach.call () ทำอะไรใน JavaScript
ฉันกำลังดูตัวอย่างโค้ดบางส่วนและฉันพบหลายองค์ประกอบที่เรียกใช้ฟังก์ชันผ่านรายการโหนดโดยใช้ forEach กับอาร์เรย์ว่าง ตัวอย่างเช่นฉันมีบางอย่างเช่น: [].forEach.call( document.querySelectorAll('a'), function(el) { // whatever with the current node }); แต่ฉันไม่เข้าใจว่ามันทำงานอย่างไร ใครช่วยอธิบายพฤติกรรมของอาร์เรย์ว่างด้านหน้า forEach และวิธีการcallทำงานได้บ้าง

16
ลบ [] รู้ได้อย่างไรว่าเป็นอาร์เรย์
เอาล่ะฉันคิดว่าเราทุกคนยอมรับว่าสิ่งที่เกิดขึ้นกับรหัสต่อไปนี้ไม่ได้กำหนดขึ้นอยู่กับสิ่งที่ส่งผ่าน void deleteForMe(int* pointer) { delete[] pointer; } ตัวชี้อาจเป็นสิ่งที่แตกต่างกันได้ดังนั้นการดำเนินการอย่างไม่มีเงื่อนไขdelete[]จึงไม่ได้กำหนดไว้ อย่างไรก็ตามสมมติว่าเรากำลังส่งตัวชี้อาร์เรย์ int main() { int* arr = new int[5]; deleteForMe(arr); return 0; } คำถามของฉันคือในกรณีนี้ที่ตัวชี้เป็นอาร์เรย์ใครเป็นคนรู้เรื่องนี้ ฉันหมายถึงจากมุมมองของภาษา / คอมไพเลอร์ไม่มีความคิดว่าarrเป็นตัวชี้อาร์เรย์หรือไม่เมื่อเทียบกับตัวชี้ไปยัง int เดียว Heck ไม่รู้ด้วยซ้ำว่าarrถูกสร้างขึ้นแบบไดนามิกหรือไม่ แต่ถ้าฉันทำสิ่งต่อไปนี้แทน int main() { int* num = new int(1); deleteForMe(num); return 0; } ระบบปฏิบัติการมีความฉลาดพอที่จะลบเพียง int เดียวและไม่ใช้ 'ความสนุกสนานในการฆ่า' บางประเภทโดยการลบหน่วยความจำที่เหลือเกินกว่าจุดนั้น (ตรงกันข้ามกับสตริงที่strlenไม่มีการตัด\0ทอนและจะดำเนินต่อไปจนกว่าจะถึง ฮิต …

5
ใน Matlab ควรใช้ bsxfun เมื่อใด
คำถามของฉัน:ฉันสังเกตเห็นว่าคำตอบที่ดีมากมายสำหรับคำถาม Matlab ใน SO มักใช้ฟังก์ชันbsxfunนี้ ทำไม? แรงจูงใจ:ในเอกสาร Matlab สำหรับbsxfunตัวอย่างต่อไปนี้มีให้: A = magic(5); A = bsxfun(@minus, A, mean(A)) แน่นอนเราสามารถดำเนินการเดียวกันโดยใช้: A = A - (ones(size(A, 1), 1) * mean(A)); และในความเป็นจริงการทดสอบความเร็วอย่างง่ายแสดงให้เห็นว่าวิธีที่สองเร็วขึ้นประมาณ 20% ทำไมต้องใช้วิธีแรก? ฉันคาดเดาว่ามีบางสถานการณ์ที่การใช้bsxfunจะเร็วกว่าวิธีการ "ด้วยตนเอง" มาก ฉันสนใจที่จะเห็นตัวอย่างของสถานการณ์ดังกล่าวและคำอธิบายว่าเหตุใดจึงเร็วกว่า นอกจากนี้องค์ประกอบสุดท้ายของคำถามนี้อีกครั้งจากเอกสาร Matlab สำหรับbsxfun: "C = bsxfun (fun, A, B) ใช้การดำเนินการไบนารีองค์ประกอบต่อองค์ประกอบที่ระบุโดยฟังก์ชันจับ fun กับอาร์เรย์ A และ B โดยใช้ …
136 arrays  matlab  bsxfun 

8
อาร์เรย์ฮีปและสแต็กและชนิดของค่า
int[] myIntegers; myIntegers = new int[100]; ในโค้ดด้านบน int [100] ใหม่กำลังสร้างอาร์เรย์บนฮีปหรือไม่ จากสิ่งที่ฉันได้อ่านเกี่ยวกับ CLR ผ่าน c # คำตอบคือใช่ แต่สิ่งที่ฉันไม่เข้าใจคือสิ่งที่เกิดขึ้นกับ int จริงภายในอาร์เรย์ เนื่องจากเป็นประเภทค่าฉันจึงเดาว่าพวกเขาจะต้องอยู่ในกล่องอย่างที่ฉันทำได้เช่นส่ง myIntegers ไปยังส่วนอื่น ๆ ของโปรแกรมและมันจะทำให้สแต็คยุ่งเหยิงหากพวกเขาถูกทิ้งไว้ตลอดเวลา . หรือว่าฉันผิด? ฉันเดาว่าพวกมันเพิ่งถูกบรรจุกล่องและจะอยู่บนกองได้นานเท่าที่อาร์เรย์มี
136 c#  arrays  memory  stack  heap 

5
ไม่เข้าใจวิธีคำนวณกำลังสองของตัวเลขนี้
ฉันพบฟังก์ชันที่คำนวณกำลังสองของตัวเลข: int p(int n) { int a[n]; //works on C99 and above return (&a)[n] - a; } ก็จะส่งกลับค่า n 2 คำถามคือมันทำได้อย่างไร? หลังจากการทดสอบเล็ก ๆ น้อย ๆ ผมพบว่าระหว่าง(&a)[k]และ(&a)[k+1]เป็น/sizeof(a) sizeof(int)ทำไมถึงเป็นเช่นนั้น?

8
พิจารณาว่า JSON เป็น JSONObject หรือ JSONArray
ฉันจะได้รับ JSON Object หรือ Array จากเซิร์ฟเวอร์ แต่ฉันไม่รู้ว่าจะเป็นอย่างไร ฉันต้องทำงานกับ JSON แต่ในการทำเช่นนั้นฉันต้องรู้ว่ามันเป็น Object หรือ Array ฉันกำลังทำงานกับ Android ใครมีวิธีที่ดีในการทำเช่นนี้หรือไม่?
135 android  arrays  json  object 


4
เลือกค่าของคุณสมบัติหนึ่งบนวัตถุทั้งหมดของอาร์เรย์ใน PowerShell
สมมติว่าเรามีอาร์เรย์ของวัตถุ $ object สมมติว่าวัตถุเหล่านี้มีคุณสมบัติ "ชื่อ" นี่คือสิ่งที่ฉันต้องการทำ $results = @() $objects | %{ $results += $_.Name } วิธีนี้ได้ผล แต่จะทำได้ดีกว่านี้หรือไม่? หากฉันทำสิ่งที่ชอบ: $results = objects | select Name $resultsคืออาร์เรย์ของวัตถุที่มีคุณสมบัติ Name ฉันต้องการให้ $ results มีอาร์เรย์ของ Names มีวิธีที่ดีกว่า?


3
โค้ดชิ้นนี้กำหนดขนาดอาร์เรย์โดยไม่ใช้ sizeof () ได้อย่างไร
จากคำถามสัมภาษณ์ C ฉันพบคำถามที่ระบุว่า "จะหาขนาดของอาร์เรย์ใน C โดยไม่ใช้ตัวดำเนินการ sizeof ได้อย่างไร" โดยมีวิธีแก้ไขดังนี้ มันใช้งานได้ แต่ฉันไม่เข้าใจว่าทำไม #include <stdio.h> int main() { int a[] = {100, 200, 300, 400, 500}; int size = 0; size = *(&a + 1) - a; printf("%d\n", size); return 0; } ตามที่คาดไว้ผลตอบแทน 5 แก้ไข: ผู้คนชี้ให้เห็นคำตอบนี้แต่ไวยากรณ์แตกต่างกันเล็กน้อยนั่นคือวิธีการจัดทำดัชนี size = (&arr)[1] - arr; ดังนั้นฉันเชื่อว่าคำถามทั้งสองถูกต้องและมีแนวทางในการแก้ปัญหาที่แตกต่างกันเล็กน้อย …

6
ฉันจะสร้างสตรีมจากอาร์เรย์ได้อย่างไร
เมื่อใดก็ตามที่ฉันต้องการสร้างสตรีมจากอาร์เรย์ฉันจะทำ String[] array = {"x1", "x2"}; Arrays.asList(array).stream(); มีวิธีโดยตรงในการสร้างสตรีมจากอาร์เรย์หรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.