对三维vector的元素从小到大排序,输出最小的10个值及其位置

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    // 定义三维vector并初始化
    std::vector<std::vector<std::vector<double>>> data = {
        {{1.0, 5.2, 3.1}, {7.3, 8.2, 2.1}},
        {{9.1, 6.3, 4.4}, {5.5, 3.6, 0.7}},
        {{2.3, 4.1, 5.9}, {7.8, 1.2, 6.4}}
    };

    // 定义一个结构体来保存值和位置
    struct ValueWithPosition {
        double value;
        size_t x, y, z;
    };

    // 定义一个vector来保存所有元素及其位置
    std::vector<ValueWithPosition> allElements;

    // 遍历三维vector并保存元素及其位置
    for (size_t i = 0; i < data.size(); ++i) {
        for (size_t j = 0; j < data[i].size(); ++j) {
            for (size_t k = 0; k < data[i][j].size(); ++k) {
                allElements.push_back({data[i][j][k], i, j, k});
            }
        }
    }

    // 对allElements排序
    std::sort(allElements.begin(), allElements.end(), [](const ValueWithPosition &a, const ValueWithPosition &b) {
        return a.value < b.value;
    });

    // 输出最小的10个值及其位置
    std::cout << "最小的10个值及其位置:" << std::endl;
    for (size_t i = 0; i < std::min(size_t(10), allElements.size()); ++i) {
        const auto &elem = allElements[i];
        std::cout << "值: " << elem.value << ", 位置: (" << elem.x << ", " << elem.y << ", " << elem.z << ")" << std::endl;
    }

    return 0;
}

说明:

  • 定义数据结构:使用三维向量data来存储三维数据,并定义了一个结构体ValueWithPosition来保存值及其位置。

  • 收集所有元素及其位置:遍历三维向量,将每个元素及其在三维向量中的位置保存到一个一维向量allElements中。

  • 排序:使用std::sortallElements进行排序。排序的比较函数是一个lambda表达式,按照元素值进行升序排序。

  • 输出结果:遍历排序后的结果,输出最小的10个值及其位置。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值