搜尋

首頁  >  問答  >  主體

c++ - 关于数组插入元素的问题

int a[10];
int b[10] = {1,1,2,2,3,3,4,4,5,5};
for(int i=0;i<10;i++){
    a[i] = b[i];
}

但是需要数组a里面的元素不重复也就是说当b的第二个元素插入的时候需要判断一个b[1]是否已经在a里面了 这个判断怎么写啊 记得有一个是否包含的判断的 具体怎么整啊

迷茫迷茫2817 天前618

全部回覆(3)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:22:08

    你可以用std::find,像這樣

    vector<int> a(10);
    vector<int> b = {1,1,2,2,3,3,4,4,5,5};
    
    for(auto i : b)
    {
        auto res = std::find(a.begin(), a.end(), i);
        if(res == a.end())
            a.push_back(i);
    }

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 14:22:08

    std::set<int>
    用數組的話就自己每次插入去遍歷是否已經存在元素。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:22:08

    • b可以排序

      • b是有序的
        判斷前一個元素是否等於目前要插入的元素即可

        if ( a的最后一个元素 != 当前要插入的元素) {
            插入到a的最后
        }
      • b是無序的
        可以排序然後執行上面的演算法

    • b不可以排序且無序

      • a和b順序不必一致
        用特殊的手段(例如堆建立的過程)一次插入到a

      • a、b順序一致
        只能插入先前尋找是否要相同元素或 使用 輔助資料結構記錄已插入的元素

      當然可以利用現成的stl中的set或其他的如位數組之類的東西,當然如果是學習的話還是老老實現一次比較好

    回覆
    0
  • 取消回覆