我試圖插入2項爲載體,我無法理解這行代碼:插入2項爲載體
vector<pair<vertex *, double> > vec;
有人能解釋此行的意義?我的思考過程是我有一個向量,其中包含一個名爲Pair
的類,它接受一個名爲vertex
的類的指針和一個值。這如何幫助我將2個項目插入矢量中的單個單元格中?關於如何將2個項目插入向量中的單個單元格的任何其他建議將會有所幫助。
我試圖插入2項爲載體,我無法理解這行代碼:插入2項爲載體
vector<pair<vertex *, double> > vec;
有人能解釋此行的意義?我的思考過程是我有一個向量,其中包含一個名爲Pair
的類,它接受一個名爲vertex
的類的指針和一個值。這如何幫助我將2個項目插入矢量中的單個單元格中?關於如何將2個項目插入向量中的單個單元格的任何其他建議將會有所幫助。
A std::pair
是一個類,它是C++的標準模板庫(STL)的一部分。你可以把一個項到該載體如下:
vec.push_back(std::make_pair(vert_ptr, value));
其中vert_ptr
是指向vertex
類型和value
的一個目的是double
變量。
在這裏,std::make_pair
從您傳遞它的兩個參數構造一個std::pair
實例。
您的矢量元素是配對對象。每個對象都包含一個指向頂點和雙精度的指針。所以,如果你想要插入的2個項目是一個指向頂點和雙精度的指針,你可以從這些中創建一個pair
並將它插入到你的向量中。
pair
數據類型在標準庫中定義:std::pair
vector
數據類型在標準庫中爲std::vector
。
要插入到一個向量中,請使用insert
而不是push_back
- insert將迭代器作爲第一個參數,因此類似於;
auto first = vec.begin();
vec.insert(first+3, std::make_pair(vert_ptr, value));
會插入在載體中的第三元件(假設是,許多的話) - 填空進行錯誤處理和其它邊緣情況。
注意:vector
可能不是,如果你有很多插入
的理解這裏的關鍵部分是,你不能插入「兩個項目」成一個單一的「細胞」用最好的結構,你不需要。
您正在嘗試添加一個元素。該元素恰巧屬於std::pair
類型。 A std::pair
本身包裝兩個對象。
一旦你瞭解了這一點,你就會意識到你只是像處理任何其他矢量元素類型一樣處理std::pair
,而你在笑。
有趣的「兩個插入」的位置 - 我沒有考慮過:-) – Soren
因此,從某種意義上說'pair'被認爲是一個'對象'包含2個項目是否正確?從某種意義上說,你是將'對象'插入到矢量中的? – Bthegreatest
@Bthegreatest 100%。這正是你在做的。 'std :: pair
你有一個名爲'Pair'的類包含兩個對象,你可以將它推入一個向量。這如何幫助你將兩個對象推入矢量?你究竟知道什麼? – user463035818
@NathanOliver對不起,我的意思是插入2個項目到一個單元格 – Bthegreatest
什麼是「單元格」? – Soren