首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以特定值C++拆分数组

以特定值C++拆分数组
EN

Stack Overflow用户
提问于 2017-03-02 23:06:46
回答 3查看 1.1K关注 0票数 3

假设我有一个这样的数组:

代码语言:javascript
运行
AI代码解释
复制
int arr [9] = {2,1,5,8,9,4,10,15,20}

如何在某个值阈值下拆分数组?假设int 8是我们的拆分值,那么最终结果将是两个独立的数组(如果您想尝试一下,也可以是一个2d数组),在本例中是arr1 [4] = {1,2,4,5}arr2 [5] = {8,9,10,15,20}arr1存储arr8以下的所有值,arr2存储arr8以上的所有值。

我还没有找到足够的文档或示例来说明这一点,我认为数组操作和拆分值得拥有这些示例。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-02 23:27:28

使用std::partition,或者,如果您希望保持相对顺序而不对数据排序,则使用std::stable_partition

代码语言:javascript
运行
AI代码解释
复制
    #include <algorithm>
    #include <iostream>
    #include <vector>

    int main()
    {
        int pivot = 8;
        int arr [9] = {2,1,5,8,9,4,10,15,20};

        // get partition point  
        int *pt = std::stable_partition(arr, std::end(arr), [&](int n) {return n < pivot;});

        // create two vectors consisting of left and right hand side
        // of partition
        std::vector<int> a1(arr, pt);
        std::vector<int> a2(pt, std::end(arr));

        // output results
        for (auto& i : a1)
            std::cout << i << " ";
        std::cout << '\n';
        for (auto& i : a2)
            std::cout << i << " ";
    }

Live Example

票数 3
EN

Stack Overflow用户

发布于 2017-03-02 23:17:42

如果您可以使用C++11,那么这是使用标准库的一种方式:

使用partition_point:(编辑链接中的示例)

代码语言:javascript
运行
AI代码解释
复制
#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <vector>

int main()
{
    std::array<int, 9> v = {2,1,5,8,9,4,10,15,20};

    auto is_lower_than_8 = [](int i){ return i < 8; };
    std::partition(v.begin(), v.end(), is_lower_than_8 );

    auto p = std::partition_point(v.begin(), v.end(), is_lower_than_8 );

    std::cout << "Before partition:\n    ";
    std::vector<int> p1(v.begin(), p);
    std::sort(p1.begin(), p1.end());
    std::copy(p1.begin(), p1.end(), std::ostream_iterator<int>(std::cout, " "));

    std::cout << "\nAfter partition:\n    ";
    std::vector<int> p2(p, v.end());
    std::sort(p2.begin(), p2.end());
    std::copy(p2.begin(), p2.end(), std::ostream_iterator<int>(std::cout, " "));
}

打印的内容:

代码语言:javascript
运行
AI代码解释
复制
Before partition:
    1 2 4 5 
After partition:
    8 9 10 15 20
票数 2
EN

Stack Overflow用户

发布于 2017-03-02 23:56:41

我正在研究一个使用循环的解决方案。这是一项正在进行的工作。让我知道你的想法。

代码语言:javascript
运行
AI代码解释
复制
void splitarr(int arr[], int length) {
    int accu = 0;
    int accu2 = 0;
    int splitter = rand() % 20;
    for (int i = 0; i < length; i++) {
        if (i != splitter) {
            accu++;
        }
    }
    int arr1[accu];
    for (int i = 0; i < length; i++) {
        if (i != splitter) {
            arr1[i] = i;
        }

    }

    for (int i = 0; i < length; i++) {
        if (i == splitter) {
            accu2++;
        }
    }
    int arr2[accu2];
    for (int i = 0; i < length; i++) {
        if (i == splitter) {
            arr2[i] = i;
        }

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42567699

复制
相关文章
js中如何判断数组中包含某个特定的值_js数组是否包含某个值
array.includes(searchElement[, fromIndex])
全栈程序员站长
2022/09/27
19.6K0
LeetCode - 数组拆分
偷懒了几天,默默的跑去看各种小说,不想更新公众号。接下去的几天,利用休假的机会把前几天看的几本小说都写一下各自的剧情简介。
晓痴
2019/07/24
1.2K0
LeetCode - 数组拆分
练习4—寻求特定值
题目 编写程序,从键盘上输入N个学生的考试成绩存入一维数组中,求该数组中成绩的最高分、最低分及平均分并输出到屏幕。 解题步骤 (1)定义常量N值; (2)建立用于存放数据的一维数组; (3)接收用户输入; (4)查询 / 计算特定值; (5)输出结果; Java import java.util.Scanner; public class Demo { public static void main(String[] args) { Scanner input = ne
攻城狮杰森
2022/06/03
3880
01:查找特定的值
01:查找特定的值 查看 提交 统计 1 #include<iostream> 2 using namespace std; 3 int a[10001]; 4 int main() 5 { 6 int n; 7 int ans; 8 cin>>n; 9 for(int i=1;i<=n;i++) 10 { 11 cin>>a[i]; 12 } 13 cin>>ans; 14 for(int j=1;j<
attack
2018/04/03
2K0
561. 数组拆分 I
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 nums.length == 2 * n 示例 1: 输入:nums = [1,4,3,2] 输出:4 解释:所有可能的分法(忽略元素顺序)为: 1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3 2.
编程张无忌
2021/06/10
6060
LeetCode 561. 数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
Michael阿明
2022/11/26
5420
LeetCode 561. 数组拆分 I
如何根据特定值找到IDOC
IDOC的官方名称叫Intermediate Document,用于两个模块,或者两个系统间交换信息。
用户5495712
2020/10/22
1.9K0
如何根据特定值找到IDOC
漫画:如何在数组中找到和为 “特定值” 的两个数?
什么意思呢?我们来举个例子,给定下面这样一个整型数组(题目假定数组不存在重复元素):
小灰
2020/10/09
3.3K0
漫画:如何在数组中找到和为 “特定值” 的两个数?
数组拆分 I array-partiti
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
py3study
2020/01/08
5250
LeetCode 算法 | 如何拆分数组?
今天给大家分享的 LeetCode 算法题是和数组相关,关于如何拆分数组的,来一起夯实一下算法内功。
好好学java
2019/12/31
9440
LeetCode 561. 数组拆分 I
给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。
freesan44
2020/06/03
4840
R语言:以多列标准筛选特定行
在本期,我们会运用一个病例数据为大家进行讲解示范,这也是大猫课堂第一次针对阅读者提问进行的反馈,也希望大家能提供一些有趣的问题,来和我们一起分享,同时也感谢读者孤鹜惜秋,与我们分享其问题。话不多说,马上进入正题。
用户7652506
2020/08/12
2K0
R语言:以多列标准筛选特定行
PHP按特定key进行多维数组排序
实际上array_multisort 是PHP内置的方法,官方有说明: PHP - array_multisort
雪碧君
2023/02/15
2.8K0
c++数组,c++获取数组元素个数
(4).c++获取数组元素个数,通过sizeof计算数组总大小,再计算单个元素的类型的总大小,然后用数组的总大小/元素类型的大小即可
高久峰
2023/06/23
4580
C++,拆分.c.h文件
文章目录 效果图 a.cpp a.h main.cpp 效果图 a.cpp #include "a.h" int fun(int x){ return x; } a.h #include <
瑞新
2020/07/07
8040
C++,拆分.c.h文件
漫画:如何在数组中找到和为 “特定值” 的三个数?
前一段时间,我们介绍了LeetCode上面的一个经典算法题【两数之和问题】。 这一次,我们把问题做一下扩展,尝试在数组中找到和为“特定值”的三个数。 题目的具体要求是什么呢?给定下面这样一个整型数组: 我们随意选择一个特定值,比如13,要求找出三数之和等于13的全部组合。 由于5+6+2=13, 5+1+7=13,3+9+1=13,所以最终的输出结果如下: 【5, 6,2】 【5, 1,7】 【3, 9,1】 小灰的思路,是把原本的“三数之和问题”,转化成求n次“两数之和问题”。 我们以上
腾讯NEXT学位
2020/10/14
2.5K0
以特定用户和组来执行某个程序 - linux
运行cockpit 服务时,我们指定运行此程序的用户和组;cockpit-ws cockpit-ws
西湖醋鱼
2020/12/30
9970
Leetcode 561:数组拆分 I Array Partition I
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), …, (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.
爱写bug
2019/08/01
4610
Leetcode 561:数组拆分 I Array Partition I
c++ 数组
数组就是一组元素的内存位置,各个内存位置可以存储相同数据类型的数据项,而我们可以用相同的变量名引用所有的内存地址 初始化数组 int myA[5]={1,2,3,4,5}; 也可以这样 int myA[5]={1,2,3} ; //这样前3个值是有初始值的,后2个是默认值0 也可以为所有的元素一同初始化值 int myA[5]={3}; 还可以省略数组的长度,数组的元素数量就是数组的长度 int MyA[] ={1,2,3}; 使用for循环数组 for(int v : MyA) {   cout<<v<<
lpxxn
2018/01/31
7430
C++ 数组
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
爱学iOS的小麦子
2022/12/09
6490

相似问题

以给定值拆分数组

24

Presto -按特定值拆分数组

165

如何将数组拆分为特定值

25

根据特定的内部数组值拆分单个数组

14

(C++)数组中的特定值

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档