将元素添加到多维矢量C 中
adding an element to multi-dimensional vector c++
对你们中的某些人来说似乎很明显,但是我试图在单行。通常的方法可能是:
std::vector<int> vec1;
std::vector< std::vector<int> > vec_vec;
int a = 5;
vec1.push_back(a);
vec_vec.push_back(vec1);
我试图做的是将最后三行压缩成一条线。我想知道是否可以这样做。
请注意,我不知道vec_vec
的大小。我唯一知道的是我插入元素的位置。
注意:我正在使用C 98。
怎么样
using V = std::vector<int>;
std::vector<V> vec_vec;
vec_vec.push_back(V(1, 5));
或仅(感谢Melak47)
std::vector< std::vector<int> > vec_vec;
vec_vec.push_back({5});
或
std::vector< std::vector<int> > vec_vec;
vec_vec.emplace_back(1, 5);
第二个版本较短,第三版可能更有效,但这取决于优化。
由于原始要求是能够以任何位置插入 而又不知道一行代码中的任何尺寸,所以我认为大多数通用解决方案都是:
std::vector< std::vector<int> > vec_vec;
//assuming we want insert 5 at position [i][j]
int i=3,j=4;
vec_vec.size() <= i ? (vec_vec.resize(i+1,std::vector<int>(j+1,0)), vec_vec[i][j]=5) : (vec_vec[i].size() <= j ? (vec_vec[i].resize(j+1,0), vec_vec[i][j] = 5) : vec_vec[i][j] = 5);
它在位置[3] [4]插入5,请检查所有尺寸并在必要时重新尺寸的组件(所有新添加的元素默认默认初始化为0),所有已经存在的元素都保持不变,并保证结果。至少要在插入后大小(i 1)x(j 1)。
相关文章:
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将元素添加到数组的线程安全函数?
- 如何将元素添加到向量的字符串位置
- 将数组的元素添加到链表中
- 如何在C++中将元素添加到非固定大小的数组中?
- 如何使用模板根据类型将元素添加到各种容器中
- 将在堆栈上声明的元素添加到静态数组
- 有什么方法可以将元素添加到列表中,如图所示?
- 继承层次结构并将元素添加到向量
- gStreamer 将元素添加到通过 gst_parse_launch 创建的管道中
- 将新元素添加到列表中,并返回对该元素的引用?
- 将元素添加到 std::list 在多线程中,无需 C++ 互斥锁
- C++如何通过超出大小将元素添加到指针数组中
- 将集合的随机元素添加到列表中,然后将其从原始集合中移除
- 将字符串集合中的元素添加到字符串集合的向量中
- 为什么 memcpy() 是一种将元素添加到 'std::map' 的方法?
- 如何有条件地将元素添加到 std::array - C++11
- 如何在 c++ 中将元素添加到数组的最后一个
- 如何使用<<运算符将元素添加到向量?
- 将元素添加到结构向量的全球向量中