我试图在向量中插入2个项目,但我无法理解这行代码:
vector<pair<vertex *, double> > vec;
有人可以解释这条线的含义吗?我的思维过程是我有一个包含一个名为Pair
的类的向量,它接受一个名为vertex
的类的指针和一个值。这如何帮助我将2个项目插入到向量中的单个单元格中?关于如何将2个项目插入向量中的单个单元格的任何其他建议都会有所帮助。
答案 0 :(得分:4)
std::pair
是一个类,它是C ++标准模板库(STL)的一部分。您可以按如下方式将项目推送到此向量中:
vec.push_back(std::make_pair(vert_ptr, value));
其中vert_ptr
是指向vertex
类型对象的指针,value
是double
变量。
此处,std::make_pair
从您传递的两个参数中构造std::pair
个实例。
答案 1 :(得分:1)
矢量元素是配对对象。每个对对象包含一个指向顶点和双精度的指针。
因此,如果要插入的2个项目是指向顶点和双精度的指针,则可以从这些项目创建pair
并将其插入到矢量中。
pair
数据类型在标准库中定义:std::pair
vector
数据类型在标准库中为std::vector
。
答案 2 :(得分:1)
这里理解的关键是你不能插入两个项目&#34;进入单个&#34;单元&#34;和您不需要。
您正在尝试添加一个元素。该元素恰好是std::pair
类型。 std::pair
本身包装了两个对象。
一旦你理解了这一点,你就会意识到你只需处理std::pair
,就像处理任何其他向量元素类型一样,并且你在笑。
答案 3 :(得分:0)
要插入向量,请使用insert
而不是push_back
- insert将迭代器作为第一个参数,所以类似于;
auto first = vec.begin();
vec.insert(first+3, std::make_pair(vert_ptr, value));
会插入向量中的第3个元素(假设已经有很多元素) - 填写错误处理和其他边缘情况的空白。
注意:如果您有许多插入内容,vector
可能不是最好的结构