Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为向量分配内存_C++_Vector - Fatal编程技术网

C++ 为向量分配内存

C++ 为向量分配内存,c++,vector,C++,Vector,有人能告诉我为什么这个程序会崩溃吗? 基本上我是想创建一个数组向量 #include <iostream> #include <stdio.h> #include <vector> using namespace std; int main() { vector <int> arr[100]; arr[0][0] =5; printf("%d",arr[0][0]); return 0; } 您正在创建一个包含

有人能告诉我为什么这个程序会崩溃吗? 基本上我是想创建一个数组向量

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;

int main() {
    vector <int> arr[100];
    arr[0][0] =5;
    printf("%d",arr[0][0]);

    return 0;
}
您正在创建一个包含100个空向量的数组,而不是一个数组向量为什么不是一个向量向量?。没有什么可利用的

使用以下命令:

vector<vector <int>> arr(100, vector <int>(size));
尺寸符合您的要求

如果需要数组向量,请使用:

vector<array<int, 100>> arr(size);

因为您没有在vector中分配元素。你把std::vector和静态数组搞混了,它们需要调用。向后推或进行预分配

因此,在您的代码中,arr[0]将起作用,因为这是对静态数组的第一个元素的引用,而arr[0][0]正在崩溃

试一试


你能告诉我[0]的值是多少吗?它是该向量内数组第一行的地址吗?[0]的值是空的std::vector。不是第一行,也不是第二行,它是空的,直到你用push_back填充它。我读到我们不能在向量v中存储数组,但是这里发生的事情是我们存储向量中每个行数组的地址吗?请帮助我了解cppstd::vector是一个类,它不仅仅是一行。这个类有内部指针来管理动态内存分配,您不应该把它看作一行。所以你有100个类的静态数组,每个类都是std::vector的一个实例这是你犯的错误,你没有数组的向量,这是不可能的。这就是std::array的用途,请参见我的答案。
arr[0].push_back(5)