首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++阵列“裁剪”算法

C++阵列“裁剪”算法
EN

Stack Overflow用户
提问于 2013-09-18 04:48:36
回答 2查看 1.4K关注 0票数 1

是否有一种无需创建新数组就可以交换数组的两部分的方法?比如切一副牌?我能够这样做,分配一个新的数组,然后插入顶部扇区,然后低扇区元素之后。

我尝试在没有额外数组的情况下这样做,并有两个临时变量来保存元素,而算法则在各部分之间进行交换。问题是,我的尝试将适用于特定的案件。

例如:

原始数组:0 1 2\3 4 5 6 7

第二指数切入

交换阵列:

3 4 5 6 7 0 1 2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-18 05:03:40

您可以在此任务中使用std::rotate。它对集合中的数据进行左旋,因此您可以指定一个“剪切”点,并移动元素,因此指定切点后的元素将位于起始位置,而在切点之前的元素将移至末尾。

票数 5
EN

Stack Overflow用户

发布于 2013-09-18 04:51:57

是的,你可以储存下半部分的第一个元素,把前半部分移到右边。将0‘数组元素分配给这个存储的数字。你刚刚把下半场的第一个数字移到了开场。下一次重复等。

守则草案:

代码语言:javascript
复制
for(int i = start; i < arr.size(); i++){
    double temp = arr[i];
    for(int j = start-1; j > i - start; j--){
        arr[j+1] = arr[j];
    }
    arr[i - start] = temp;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18864065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档