第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++數(shù)組間合并

C++數(shù)組間合并

C C++
Cats萌萌 2018-07-20 14:22:05
如何實現(xiàn)C++數(shù)組間的合并,存在重復(fù)項描述如下:比如 a[4] = {2, 3, 454, 67}; b[4] = {223, 23, 45, 454}; c[4] = {23, 87, 223, 452};合并成merge[num] = {2, 3, 23, 45, 67, 87, 223, 452, 454}; num為9; num的值在合并過程中自動累加統(tǒng)計實現(xiàn)!怎么把數(shù)組合并,各數(shù)組復(fù)的元素重僅僅保留一個!
查看完整描述

1 回答

?
人到中年有點甜

TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊

#include <set>

#include <iostream>


int main()

{

    int a[4] = {2, 3, 454, 67}; 

    int b[4] = {223, 23, 45, 454}; 

    int c[4] = {23, 87, 223, 452};


    std::set<int> set(a, a+4);

    set.insert(b, b+4);

    set.insert(c, c+4);


    for (auto i : set)

        std::cout << i << " ";

    std::cout << std::endl; 


    return 0;

需要C++11 支持。

如果不想用c++11,只需要改一下輸出:

for (std::set<int>::iterator iter = set.begin(); iter != set.end(); ++iter)

    std::cout << *iter << " ";

std::cout << std::endl; 


鑒于題主想用比較底層的方法,類似純C的方式,即不用STL的函數(shù)。那樣思路就要分幾個步驟了:

  1. 合并到一個大數(shù)組里去

  2. 將大數(shù)組排序

  3. 去掉大數(shù)組中的重復(fù)項

我用C語言簡單實現(xiàn)了上述步驟,沒有考慮算法效率,僅供參考:

#include <stdio.h>

#include <stdlib.h>


int* unique(int* first, int* last)

{

    if (first==last) return last;


    int* result = first;

    while (++first != last)

    {

        if (!(*result == *first)) 

            *(++result)=*first;

    }

    return ++result;

}


void merge(int a[], int b[], int beg, int size)

{

    for (int i=0; i<size; ++i)

        a[beg+i] = b[i];

}


int compare (const void * a, const void * b)

{

    return ( *(int*)a - *(int*)b );

}


int main()

{

    int a[4] = {2, 3, 454, 67}; 

    int b[4] = {223, 23, 45, 454}; 

    int c[4] = {23, 87, 223, 452};


    int d[12];

    merge(d, a, 0, 4);

    merge(d, b, 4, 4);

    merge(d, c, 8, 4);


    qsort (d, 12, sizeof(int), compare);

    int *end = unique(d, d+12);

    for (int *p = d; p != end; ++p)

        printf("%d ", *p);


    return 0;


查看完整回答
反對 回復(fù) 2018-07-24
  • 1 回答
  • 0 關(guān)注
  • 1068 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號