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

เวกเตอร์เป็นอาร์เรย์แบบมิติเดียว: ประกอบด้วยส่วนประกอบที่สามารถเข้าถึงได้โดยใช้ดัชนีอินทิกรัล ในบางภาษาขนาดของเวกเตอร์สามารถขยายหรือย่อขนาดได้ตามต้องการเพื่อรองรับการเพิ่มและลบรายการหลังจากสร้างเวกเตอร์แล้ว ใช้ 'กราฟิกแบบเวกเตอร์' สำหรับการแสดงผลกราฟิก

6
แปลงแถวของกรอบข้อมูลเป็นเวกเตอร์
ฉันต้องการสร้างเวกเตอร์จากแถวของกรอบข้อมูล แต่ฉันไม่ต้องการที่จะต้องมีชื่อแถวและคอลัมน์ ฉันลองหลายอย่าง ... แต่ไม่มีโชค นี่คือกรอบข้อมูลของฉัน: > df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3)) > df a b c 1 1 2 2.6 2 2 6 8.2 3 4 2 7.5 4 2 1 3.0 ฉันเหนื่อย: > newV <- as.vector(df[1,]) > newV a b c 1 1 2 2.6 แต่ฉันต้องการบางอย่างที่มีลักษณะเช่นนี้: > newV <- c( …
116 r  vector  dataframe 

8
การเริ่มต้น std :: vector สองมิติ
ดังนั้นฉันมีสิ่งต่อไปนี้: std::vector< std::vector <int> > fog; และฉันกำลังเริ่มต้นมันอย่างไร้เดียงสาเช่น: for(int i=0; i<A_NUMBER; i++) { std::vector <int> fogRow; for(int j=0; j<OTHER_NUMBER; j++) { fogRow.push_back( 0 ); } fog.push_back(fogRow); } และรู้สึกผิดมาก ... มีวิธีการเริ่มต้นเวกเตอร์แบบนี้อีกหรือไม่?
116 c++  vector 

3
อาร์เรย์เทียบกับเวกเตอร์: ความคล้ายคลึงและความแตกต่างเบื้องต้น [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา อะไรคือความแตกต่างระหว่างอาร์เรย์และเวกเตอร์ใน C ++? ตัวอย่างของความแตกต่างอาจรวมถึงไลบรารีสัญลักษณ์ความสามารถ ฯลฯ อาร์เรย์ อาร์เรย์ประกอบด้วยองค์ประกอบจำนวนเฉพาะของประเภทหนึ่ง ๆ เพื่อให้คอมไพลเลอร์สามารถสงวนพื้นที่ตามที่ต้องการเมื่อคอมไพล์โปรแกรมคุณต้องระบุประเภทและจำนวนองค์ประกอบที่อาร์เรย์จะมีเมื่อมีการกำหนด คอมไพเลอร์ต้องสามารถกำหนดค่านี้ได้เมื่อโปรแกรมถูกคอมไพล์ เมื่อกำหนดอาร์เรย์แล้วคุณจะใช้ตัวระบุสำหรับอาร์เรย์พร้อมกับดัชนีเพื่อเข้าถึงองค์ประกอบเฉพาะของอาร์เรย์ [... ] อาร์เรย์เป็นศูนย์ดัชนี นั่นคือองค์ประกอบแรกอยู่ที่ดัชนี 0 รูปแบบการจัดทำดัชนีนี้บ่งบอกถึงความสัมพันธ์ที่ใกล้ชิดใน C ++ ระหว่างพอยน์เตอร์และอาร์เรย์และกฎที่ภาษากำหนดสำหรับการคำนวณทางคณิตศาสตร์ของตัวชี้ - การอ้างอิงกระเป๋า C ++ เวกเตอร์ เวกเตอร์คือลำดับขนาดแบบไดนามิกของวัตถุที่ให้operator[]การเข้าถึงแบบสุ่มสไตล์อาร์เรย์ ฟังก์ชันสมาชิกpush_backคัดลอกอาร์กิวเมนต์ผ่านตัวสร้างการคัดลอกเพิ่มสำเนานั้นเป็นรายการสุดท้ายในเวกเตอร์และเพิ่มขนาดทีละรายการpop_backตรงข้ามกันโดยเอาองค์ประกอบสุดท้ายออก การแทรกหรือลบรายการจากจุดสิ้นสุดของเวกเตอร์จะใช้เวลาคงที่ในการตัดจำหน่ายและการแทรกหรือลบจากตำแหน่งอื่นต้องใช้เวลาเชิงเส้น นี่คือพื้นฐานของเวกเตอร์ ยังมีอีกมากสำหรับพวกเขา ในกรณีส่วนใหญ่เวกเตอร์ควรเป็นตัวเลือกแรกของคุณในอาร์เรย์สไตล์ C ก่อนอื่นพวกมันมีขนาดแบบไดนามิกซึ่งหมายความว่าพวกมันสามารถเติบโตได้ตามต้องการ คุณไม่จำเป็นต้องทำการวิจัยทุกประเภทเพื่อหาขนาดคงที่ที่เหมาะสมเช่นในกรณีของอาร์เรย์ C เวกเตอร์จะเติบโตขึ้นตามต้องการและสามารถปรับขนาดให้ใหญ่ขึ้นหรือเล็กลงได้ด้วยตนเองหากคุณต้องการ ประการที่สองเวกเตอร์เสนอการตรวจสอบขอบเขตด้วยatฟังก์ชันสมาชิก (แต่ไม่ใช่ด้วยoperator[]) เพื่อให้คุณสามารถทำบางสิ่งบางอย่างได้หากคุณอ้างอิงดัชนีที่ไม่มีอยู่แทนที่จะเฝ้าดูโปรแกรมของคุณขัดข้องหรือแย่กว่านั้นคือการดำเนินการอย่างต่อเนื่องด้วยข้อมูลที่เสียหาย - ตำรา C …
111 c++  arrays  vector 

7
std :: องค์ประกอบเวกเตอร์รับประกันว่าจะติดกันหรือไม่
คำถามของฉันง่ายมาก: มีการรับประกันว่าองค์ประกอบของเวกเตอร์ std :: ติดกันหรือไม่ ตามลำดับคำฉันสามารถใช้ตัวชี้ไปยังองค์ประกอบแรกของ std :: vector เป็น C-array ได้หรือไม่ หากหน่วยความจำของฉันทำงานได้ดีมาตรฐาน C ++ ก็ไม่ได้รับประกันเช่นนั้น อย่างไรก็ตามข้อกำหนด std :: vector นั้นแทบจะเป็นไปไม่ได้เลยที่จะตอบสนองความต้องการเหล่านั้นหากองค์ประกอบไม่ติดกัน ใครสามารถชี้แจงเรื่องนี้ได้บ้าง? ตัวอย่าง: std::vector<int> values; // ... fill up values if( !values.empty() ) { int *array = &values[0]; for( int i = 0; i < values.size(); ++i ) { int …
111 c++  vector  standards 

6
เหตุใดจึงส่งคืน 'เวกเตอร์' จากฟังก์ชันได้
โปรดพิจารณารหัสนี้ ฉันเคยเห็นรหัสประเภทนี้หลายครั้ง wordsเป็นเวกเตอร์ท้องถิ่น เป็นไปได้อย่างไรที่จะส่งคืนจากฟังก์ชัน เรารับประกันได้ไหมว่ามันจะไม่ตาย? std::vector<std::string> read_file(const std::string& path) { std::ifstream file("E:\\names.txt"); if (!file.is_open()) { std::cerr << "Unable to open file" << "\n"; std::exit(-1); } std::vector<string> words;//this vector will be returned std::string token; while (std::getline(file, token, ',')) { words.push_back(token); } return words; }

6
เหตุใดเวกเตอร์ <bool> จึงไม่เป็นคอนเทนเนอร์ STL
รายการที่ 18 ของสกอตต์เมเยอร์สหนังสือSTL มีผลบังคับใช้ 50 วิธีที่เฉพาะเจาะจงในการปรับปรุงการใช้งานของคุณของไลบรารีแม่แบบมาตรฐานกล่าวว่าเพื่อหลีกเลี่ยงการvector &lt;bool&gt;ที่มันไม่ได้เป็นภาชนะ STL และมันไม่ได้โดดถือbools รหัสต่อไปนี้: vector &lt;bool&gt; v; bool *pb =&amp;v[0]; จะไม่คอมไพล์ละเมิดข้อกำหนดของคอนเทนเนอร์ STL ข้อผิดพลาด: cannot convert 'std::vector&lt;bool&gt;::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization vector&lt;T&gt;::operator []return type ควรจะเป็นT&amp;แต่ทำไมถึงเป็นกรณีพิเศษสำหรับvector&lt;bool&gt;? อะไรvector&lt;bool&gt;จริงๆประกอบด้วย? รายการกล่าวเพิ่มเติมว่า: deque&lt;bool&gt; v; // is a STL container and it really contains bools สามารถใช้เป็นทางเลือกอื่นได้vector&lt;bool&gt;หรือไม่? ใครช่วยอธิบายเรื่องนี้ได้ไหม

5
จะนำทางผ่านเวกเตอร์โดยใช้ตัววนซ้ำได้อย่างไร (C ++)
เป้าหมายคือการเข้าถึงองค์ประกอบ "ที่ n" ของเวกเตอร์ของสตริงแทนตัวดำเนินการ [] หรือเมธอด "at" จากสิ่งที่ฉันเข้าใจตัวทำซ้ำสามารถใช้เพื่อนำทางผ่านคอนเทนเนอร์ได้ แต่ฉันไม่เคยใช้ตัวทำซ้ำมาก่อนและสิ่งที่ฉันกำลังอ่านอยู่ก็ทำให้สับสน หากใครสามารถให้ข้อมูลเกี่ยวกับวิธีบรรลุเป้าหมายนี้ได้ฉันจะขอบคุณ ขอบคุณ.
105 c++  iterator  vector 


6
ฉันจะสร้างเมทริกซ์จากรายการเวกเตอร์ใน R ได้อย่างไร
เป้าหมาย: จากรายการเวกเตอร์ที่มีความยาวเท่ากันสร้างเมทริกซ์โดยที่เวกเตอร์แต่ละตัวจะกลายเป็นแถว ตัวอย่าง: &gt; a &lt;- list() &gt; for (i in 1:10) a[[i]] &lt;- c(i,1:5) &gt; a [[1]] [1] 1 1 2 3 4 5 [[2]] [1] 2 1 2 3 4 5 [[3]] [1] 3 1 2 3 4 5 [[4]] [1] 4 1 2 3 4 5 [[5]] …
102 r  matrix  vector 

5
การลบองค์ประกอบจากเวกเตอร์
ฉันต้องการล้างองค์ประกอบจากเวกเตอร์โดยใช้วิธีการลบ แต่ปัญหาที่นี่คือไม่รับประกันว่าองค์ประกอบจะเกิดขึ้นเพียงครั้งเดียวในเวกเตอร์ อาจมีอยู่หลายครั้งและฉันจำเป็นต้องล้างทั้งหมด รหัสของฉันเป็นดังนี้: void erase(std::vector&lt;int&gt;&amp; myNumbers_in, int number_in) { std::vector&lt;int&gt;::iterator iter = myNumbers_in.begin(); std::vector&lt;int&gt;::iterator endIter = myNumbers_in.end(); for(; iter != endIter; ++iter) { if(*iter == number_in) { myNumbers_in.erase(iter); } } } int main(int argc, char* argv[]) { std::vector&lt;int&gt; myNmbers; for(int i = 0; i &lt; 2; ++i) { myNmbers.push_back(i); …
102 c++  vector  stl  erase 

10
ทดสอบความเท่าเทียมกันระหว่างองค์ประกอบทั้งหมดของเวกเตอร์เดียว
ฉันกำลังพยายามทดสอบว่าองค์ประกอบทั้งหมดของเวกเตอร์มีค่าเท่ากันหรือไม่ length()โซลูชั่นฉันมีมากับดูเหมือนค่อนข้างวงเวียนทั้งที่เกี่ยวข้องกับการตรวจสอบ x &lt;- c(1, 2, 3, 4, 5, 6, 1) # FALSE y &lt;- rep(2, times = 7) # TRUE ด้วยunique(): length(unique(x)) == 1 length(unique(y)) == 1 ด้วยrle(): length(rle(x)$values) == 1 length(rle(y)$values) == 1 วิธีการแก้ปัญหาที่จะให้ฉันมีค่าความอดทนในการประเมิน 'ความเท่าเทียมกันในหมู่องค์ประกอบจะเหมาะที่จะหลีกเลี่ยงคำถามที่พบบ่อย 7.31ปัญหา มีฟังก์ชันในตัวสำหรับการทดสอบประเภทที่ฉันมองข้ามไปทั้งหมดหรือไม่? identical()และall.equal()เปรียบเทียบวัตถุ R สองชิ้นดังนั้นจึงใช้ไม่ได้ที่นี่ แก้ไข 1 นี่คือผลการเปรียบเทียบบางส่วน การใช้รหัส: library(rbenchmark) John &lt;- function() …
101 r  vector  equality 

12
การทำซ้ำเวกเตอร์ C ++ จากจุดสิ้นสุดถึงจุดเริ่มต้น
เป็นไปได้ไหมที่จะวนซ้ำเวกเตอร์จากจุดเริ่มต้นจนถึงจุดเริ่มต้น for (vector&lt;my_class&gt;::iterator i = my_vector.end(); i != my_vector.begin(); /* ?! */ ) { } หรือเป็นไปได้เฉพาะกับสิ่งที่ต้องการ: for (int i = my_vector.size() - 1; i &gt;= 0; --i) { }
101 c++  vector  iterator 

12
การลบรายการออกจากเวกเตอร์ในขณะที่อยู่ใน C ++ 11 ช่วง 'for' loop?
ฉันมีเวกเตอร์ของ IInventory * และฉันกำลังวนรอบรายการโดยใช้ช่วง C ++ 11 เพื่อทำสิ่งต่างๆกับแต่ละอัน หลังจากดำเนินการบางอย่างแล้วฉันอาจต้องการลบออกจากรายการและลบวัตถุนั้น ฉันรู้ว่าฉันสามารถเรียกdeleteตัวชี้ได้ทุกเมื่อเพื่อทำความสะอาด แต่วิธีใดที่เหมาะสมในการลบออกจากเวกเตอร์ในขณะที่อยู่ในforลูปช่วง และถ้าฉันลบมันออกจากรายการลูปของฉันจะเป็นโมฆะหรือไม่? std::vector&lt;IInventory*&gt; inv; inv.push_back(new Foo()); inv.push_back(new Bar()); for (IInventory* index : inv) { // Do some stuff // OK, I decided I need to remove this object from 'inv'... }
100 c++  vector  for-loop  c++11 

8
เหตุใดสเกลเวกเตอร์ที่วาดได้ของฉันจึงไม่เป็นไปตามที่คาดไว้
ฉันกำลังพยายามใช้ vector drawables ในแอพ Android ของฉัน จากhttp://developer.android.com/training/material/drawables.html (เน้นของฉัน): ใน Android 5.0 (API ระดับ 21) ขึ้นไปคุณสามารถกำหนด vector drawables ซึ่งปรับขนาดได้โดยไม่สูญเสียความหมาย ใช้ drawable นี้: &lt;vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:width="24dp" android:viewportWidth="24" android:viewportHeight="24"&gt; &lt;path android:fillColor="@color/colorPrimary" android:pathData="M14,20A2,2 0 0,1 12,22A2,2 0 0,1 10,20H14M12,2A1,1 0 0,1 13,3V4.08C15.84,4.56 18,7.03 18,10V16L21,19H3L6,16V10C6,7.03 8.16,4.56 11,4.08V3A1,1 0 0,1 12,2Z" /&gt; และ ImageView นี้: …


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