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)