C++: 对<向量<int>,向量<int>> p;
C++: pair<vector<int>,vector<int>> p;
我们可以使用 c++ STL 做这样的事情吗?如果是,我将如何初始化元素?我试图这样做,但它不起作用。
pair<vector<int>,vector<int>>p;
p.first[0]=2;
我们可以使用 c++ STL 做这样的事情吗
是的。虽然,您可能正在使用标准库。
初始化元素如果是,我将如何初始化元素?
的方式与初始化不在对中的向量的元素的方式相同。列表初始化是一个简洁的选项。
我试图这样做,但它不起作用。
您正在尝试修改从未放在那里的向量元素。看看描述运算符 [] 做什么的页面。它没有说明它将元素添加到向量。但是,还有其他功能可以。
默认情况下,向量没有任何大小,因此您应该先push_back
一些元素或resize
它们。初始化 p 的一种方法是:
pair<vector<int>, vector<int>> p = {{1,2,3}, {4,5,6}};
p.first
和p.second
(类型为 std::vector<int>
)将被初始化,但它们仍然是空的,其中没有元素。然后p.first[0] = 2;
将导致 UB。
你可能想要
p.first.push_back(2);
是的,它可以工作,但是在访问其元素之前,您必须为std::vector
分配内存:
//p now can hold 1 element
p.first.resize(1);
或者,您可以使用push_back
:
//p now has 1 element with value 2
p.first.push_back(2).
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中