You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用一行代码交换C++ std::vector的切片?

用一行代码交换C++向量的指定切片

当然可以,用标准库的std::swap_ranges算法就能实现一行代码交换两个向量的指定切片,完全满足你的需求。

先看初始向量的正确初始化方式(C++11及以上版本支持):

#include <vector>
#include <algorithm> // 必须包含此头文件以使用swap_ranges
#include <iostream>

int main() {
    std::vector<int> a = {1, 2, 3, 4, 5};
    std::vector<int> b = {6, 7, 8, 9, 10};

    // 核心一行代码:交换指定切片
    std::swap_ranges(a.begin() + 1, a.begin() + 3, b.begin() + 3);

    // 验证结果
    std::cout << "a: ";
    for (int num : a) std::cout << num << " "; // 输出:1 9 10 4 5
    std::cout << "\nb: ";
    for (int num : b) std::cout << num << " "; // 输出:6 7 8 2 3
    return 0;
}

关键说明:

  • std::swap_ranges的作用是交换两个长度相同的元素范围,属于C++标准算法库。
  • 参数解析:
    • a.begin() + 1 到 a.begin() + 3:指定a中要交换的元素范围(左闭右开),对应a里的元素2,3。
    • b.begin() + 3:指定b中交换范围的起始位置,算法会自动取和第一个范围长度一致的元素,也就是b里的9,10。

执行这行代码后,a会变为{1,9,10,4,5},b变为{6,7,8,2,3},完全符合你的要求。

内容的提问来源于stack exchange,提问作者bob.sacamento

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:10:24