• 用c++创建一个vector<vector<int> > vec 二维动态向量,读取各个谷仓的初始粮食状况; • 基于向星的push pack和 pop back等基本操作,实现M次调动粮食 •输出最后各个谷仓 ID、该谷仓中各袋粮食的重是以及总的重量
时间: 2024-09-30 09:09:51 浏览: 34
用vector(向量)实现动态开辟二维三维数组c++语言及MPI
5星 · 资源好评率100%
在C++中,你可以使用`std::vector<std::vector<int>>`来创建一个二维动态向量,表示谷仓及其存储的粮食。首先,你需要包含必要的库头文件:
```cpp
#include <iostream>
#include <vector>
```
然后定义一个二维向量`vec`,并初始化谷仓和初始粮食:
```cpp
int main() {
// 定义谷仓数量和每谷仓的粮食容量
int numBarns = 5;
int capacityPerBarn = 10;
std::vector<std::vector<int>> vec(numBarns, std::vector<int>(capacityPerBarn, 0)); // 初始化所有谷仓为零
// 假设读取初始粮食状况的数据存储在数组或其他数据源中
// 这里仅作为示例,实际应用中需要替换为实际读取操作
for (int i = 0; i < numBarns; ++i) {
for (int j = 0; j < capacityPerBarn; ++j) {
vec[i][j] = get_initial_grain_amount(i, j); // replace with actual function to read initial grain amounts
}
}
// 接下来进行M次调动粮食的模拟
int moveOperations = M; // 替换为实际的M值
for (int operation = 0; operation < moveOperations; ++operation) {
// 实现push_back和pop_back操作,这里仅做伪代码展示,因为这通常是用于单维向量
// 对于二维向量,可以考虑遍历内部的向量
int sourceBarnId, destBarnId, grainAmount;
// 模拟获取源和目标谷仓ID以及转移的粮食数量
// vec[sourceBarnId].push_back(grainAmount); 和 vec[destBarnId].pop_back(); 代替此处
// 更新粮食信息(这里仅作示例)
vec[sourceBarnId][get_random_index(sourceBarnId)] -= grainAmount;
vec[destBarnId][get_random_index(destBarnId)] += grainAmount;
}
// 输出结果
for (int barnIndex = 0; barnIndex < numBarns; ++barnIndex) {
std::cout << "Barn ID: " << barnIndex << ", Total Grain Weight: ";
int totalWeight = 0;
for (int grainIndex = 0; grainIndex < vec[barnIndex].size(); ++grainIndex) {
totalWeight += vec[barnIndex][grainIndex];
std::cout << vec[barnIndex][grainIndex] << " (";
}
std::cout << totalWeight << ")\n";
}
return 0;
}
```
阅读全文