2016-04-22 32 views
0

我試圖插入2項爲載體,我無法理解這行代碼:插入2項爲載體

vector<pair<vertex *, double> > vec; 

有人能解釋此行的意義?我的思考過程是我有一個向量,其中包含一個名爲Pair的類,它接受一個名爲vertex的類的指針和一個值。這如何幫助我將2個項目插入矢量中的單個單元格中?關於如何將2個項目插入向量中的單個單元格的任何其他建議將會有所幫助。

+0

你有一個名爲'Pair'的類包含兩個對象,你可以將它推入一個向量。這如何幫助你將兩個對象推入矢量?你究竟知道什麼? – user463035818

+0

@NathanOliver對不起,我的意思是插入2個項目到一個單元格 – Bthegreatest

+0

什麼是「單元格」? – Soren

回答

4

A std::pair是一個類,它是C++的標準模板庫(STL)的一部分。你可以把一個項到該載體如下:

vec.push_back(std::make_pair(vert_ptr, value)); 

其中vert_ptr是指向vertex類型和value的一個目的是double變量。

在這裏,std::make_pair從您傳遞它的兩個參數構造一個std::pair實例。

1

您的矢量元素是配對對象。每個對象都包含一個指向頂點和雙精度的指針。所以,如果你想要插入的2個項目是一個指向頂點和雙精度的指針,你可以從這些中創建一個pair並將它插入到你的向量中。

pair數據類型在標準庫中定義:std::pairvector數據類型在標準庫中爲std::vector

0

要插入到一個向量中,請使用insert而不是push_back - insert將迭代器作爲第一個參數,因此類似於;

auto first = vec.begin(); 
vec.insert(first+3, std::make_pair(vert_ptr, value)); 

會插入在載體中的第三元件(假設是,許多的話) - 填空進行錯誤處理和其它邊緣情況。

注意:vector可能不是,如果你有很多插入

1

的理解這裏的關鍵部分是,你不能插入「兩個項目」成一個單一的「細胞」用最好的結構,你不需要

您正在嘗試添加一個元素。該元素恰巧屬於std::pair類型。 A std::pair本身包裝兩個對象。

一旦你瞭解了這一點,你就會意識到你只是像處理任何其他矢量元素類型一樣處理std::pair,而你在笑。

+1

有趣的「兩個插入」的位置 - 我沒有考慮過:-) – Soren

+1

因此,從某種意義上說'pair'被認爲是一個'對象'包含2個項目是否正確?從某種意義上說,你是將'對象'插入到矢量中的? – Bthegreatest

+1

@Bthegreatest 100%。這正是你在做的。 'std :: pair '也是一個類。 :) –