vector<vector<double>>是什么语法
时间: 2023-10-22 15:58:19 浏览: 166
vector<vector<double>>是C++中的语法,表示一个二维向量,其中每个元素都是一个double类型的向量。这个语法使用了模板类vector,它是C++标准库中的一个容器类,用于存储和操作动态数组。在这个语法中,vector<vector<double>>表示一个向量,其中每个元素都是一个vector<double>类型的向量。这样的数据结构可以用来表示一个二维的矩阵或表格,其中每行都是一个double类型的向量。
相关问题
std::vector<std::vector<double>> V(n + 1); 这个第一方法对么
这个语句定义了一个名为V的二维vector,其中包含n+1个vector<double>类型的元素。每个vector<double>都是表示一个行向量,因此V可以被看作是一个n+1行的矩阵,其中每行都是一个长度为0的向量。
需要注意的是,虽然这个语句在语法上没有问题,但是它并没有为V中的每个vector<double>分配内存空间,因此在使用V之前需要先为每个vector<double>分配内存空间,否则会导致运行时错误。可以使用resize()方法为每个vector<double>分配内存空间,例如:
```
std::vector<std::vector<double>> V(n + 1);
for(int i = 1; i <= n; i++) {
V[i].resize(m + 1);
}
```
这里假设m是每个向量的长度,这样就为V中的每个vector<double>分配了m+1个元素的内存空间。
#include <iostream> #include <vector> #include <cstdio> #include <string.h> #include <utility> #include <algorithm> #include <limits.h> using namespace std; double rank[100]; double avg[100]; int adj[100][100]; int task_time[100l][50]; int proc; int tasks; int eft[100][50]; int est[100][50]; int aft[100]; vector <int> parent[100]; int mini_processor[100]; vector < pair <double, int> > rank_task; class processor_slot { public: int start_time; int end_time; int task_no; }; vector <processor_slot> processor_scheduler[100]; double rec_rank(int i) { double maxi = 0; double temp; for (int j = 0; j < proc; j++) { if (adj[i][j] != -1) { temp = rec_rank(j); if (maxi < adj[i][j] + temp) maxi = adj[i][j] + temp; } } rank[i] = avg[i] + maxi; return rank[i]; }
这段代码看起来像是一个任务调度问题的解决方案。它定义了一些变量和数据结构来表示处理器和任务,然后实现了一个递归函数rec_rank来计算每个任务的优先级(rank)。这里使用了拓扑排序的思想,通过递归地计算每个任务的后继任务的rank值,来推导出每个任务的rank值。
在此基础上,还定义了一个processor_slot类和processor_scheduler数组来表示每个处理器上的任务调度情况。最终的目标应该是找到一种最优的任务调度方案,使得所有任务都能在最短时间内完成。
不过需要注意的是,这段代码中有一些问题,例如变量名rank和关键字重复,还有一些语法错误(例如第28行的100l应该改成100L)。同时,这段代码并没有完整的实现,缺少了一些重要的部分。如果你有完整的代码,或者需要更具体的帮助,可以提供更多信息让我更好地理解你的问题。
阅读全文