向量的向量是如何工作的
How do vectors of vectors work?
这里的答案是:
来自n2798 (c++ 0x草案):向量的元素是连续存储的,这意味着如果v是一个T不是bool类型的向量,那么它服从== &v[0] == &v[0] + n =所有0 <= n
#include <iostream> #include <vector> #include <iterator> using namespace std; int main(){ int k; cin >> k; cout << endl << "k = " << k << endl; ostream_iterator<int> oi(cout, " "); vector<vector<int> > vpi; while(k--) { vpi.push_back(vector<int>(istream_iterator<int>(cin), istream_iterator<int>())); cin.clear(); cout<<"k = "<< k <<endl; copy(vpi[vpi.size()-1].begin(), vpi[vpi.size()-1].end(), oi); cout<<endl; } }
当vector的元素必须具有相等的大小,且要存储的vector的大小事先未知时,vector如何连续存储vector ?
我很抱歉,如果这个已经问过了,我找不到它,如果是这种情况,请给我一个链接。
std::vector
是一个固定大小的小对象。通常的实现包括三个指针或一个指针和一对整数大小(用于当前大小和已分配容量)。vector对象的内容不存储在vector对象本身中,而是存储在使用vector的分配器(默认为标准堆分配器)分配的内存中。
所以向量的向量是一个小对象,通常是三个指针的大小。它内部的向量是堆中某个连续内存中的小对象。这些内部向量的内容在堆的其他地方
vector可以很容易地连续存储,因为vector的元素不是在vector本身内部,而是在自由存储区中的一些内存中。sizeof
规定的对象的大小为编译时常量表达式,这些是连续存储的位。
- 如何创建一个类,以便向量工作 std::vector<MyClass<int>> v{ 1,2,3 };
- 为什么 sizeof(ar)/ sizeof(ar[0]) 在传递给函数时无法在向量上正常工作?
- 从列表向量中删除无法按预期工作
- 用对对填充向量未按预期工作
- 排序函数如何在整数对的向量上工作?
- 在循环工作时,首先将两个文件读为向量,但仅次于迭代一次
- 在为工作线程访问 lambda 中捕获的向量列表中的元素引用时,是否需要互斥锁?
- 如果类数组中的向量是动态push_backed的,内存如何工作
- C++向量 [] 运算符在 at() 工作时抛出错误
- 向量擦除功能无法正常工作
- 向量::在C 中分配工作
- SDL-使用SDL_TEXTURE的std ::向量不起作用,数组正常工作
- 当输入向量称为储备金时,STD ::排序无法正常工作
- 在Graph实现中,对和向量是如何工作的
- 排序向量<变体<...>>无法通过运算符正常工作<
- (C 14)操作员&lt;&lt;超负荷无法正如智能指针向量所预期的那样工作
- 与向量和结构一起工作
- C++选项定价函数..单独工作很好,但对于股票价格的范围(向量)来说不行
- 如何在c++中使strptime在structtm的向量上工作
- std::cin >>向量[i]不会让迭代器正常工作吗?