1. 程式人生 > >C++中for迴圈巢狀遍歷的優化方法

C++中for迴圈巢狀遍歷的優化方法

專案開發過程中經常會出現A集合與B集合中資料對比取相同資料的情況。

最簡單的實現方法如下:

//List<T> A = new ArrayList<T>();
//List<T> B = new ArrayList<T>();
for(int i = 0;i<A.size();i++){
    for(int j = 0;j<B.size();j++){
        if(A.get(i).equals(B.get(j))){
            // do sth.
            break;
        }
    }
}

對於上述的方法來說,如果在資料量很大的情況下,會使迴圈次數倍增,一般開發中對於此問題會將內層的for替換成Map,程式碼如下:

//List<T> A = new ArrayList<T>();
//List<T> B = new ArrayList<T>(); ==> Map<String,T>
for(int i = 0;i<A.size();i++){
    if(B.containsKey(A)){
       // do sth.
    }    
}

現請教各位在實際專案開發中是否還有其他比較好的實現方法,謝謝。

相關推薦

C++for迴圈優化方法

專案開發過程中經常會出現A集合與B集合中資料對比取相同資料的情況。 最簡單的實現方法如下: //List<T> A = new ArrayList<T>(); //List<T> B = new ArrayList<T>(

基礎for迴圈二維陣列

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&g

phpfor迴圈問題 急,!!!

$m=3; $n=array(   '0'=>array('1'),   '1'=>array('1','2'),   '2'=>array('1','2','3'),   ); // $n=array( //  '0'=>array('1','2

16 API-集合(List的子類(ArrayList_Vector_LinkedList,集合),JDK5新特性(泛型,增強for迴圈,靜態匯入,可變引數)

1:List的子類(掌握) (1)List的子類特點ArrayList:底層資料結構是陣列,查詢快,增刪慢執行緒不安全,效率高Vector:底層資料結構是陣列,查詢快,增刪慢執行緒安全,效率低LinkedList:底層資料結構是連結串列,查詢慢,增刪快執行緒不安全,效率高

c語言list

list<string>::iterator itor;  //定義迭代器   list<string> myList1;   list<string> myList2; list<list<string

for迴圈 案例列印各種形狀的星星

案例:各種形狀星星列印 //方形 /*    for(var i=0;i<6;i++){         for(var j=0;j<6;j++){ &

for迴圈的使用

雙重迴圈排序     雙重迴圈排序演算法是一種非常簡單的排序演算法,這種演算法很容易讓人理解,也很實用,但是排序的效率很低。基本思路是用第一個數與後面的所有數進行比較,然後把最小的數放到第一個位置,然後用第二個數與後面的所有數進行比較,然後把第二個最小的數放到第二個位置,然後

C#DataTable的建立與

C#中DataTable的建立與遍歷 1、建立DataTable物件 /// <summary> /// 建立DataTable物件 /// </summary> public static DataTable CreateDataTable() { //

元組的,range,for迴圈

# 元祖 只讀列表,可迴圈查詢,可切片。 # 兒子不能改,孫子可能可以改。 # tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon') # # print(tu[3]) # # print(tu[0:4]) # # for i in tu: # # print

vue v-for迴圈的探索(二)

使用v-for迴圈的目的就是為了處理大量型別重複的資料,歸根結底是一種有規律的資料,但是有些規律卻不是那麼容易的,很多時候,我們會使用到迴圈,甚至多重迴圈的巢狀,不同的迴圈巢狀對應著不同的json資料的結構,本篇主要講述的是使用v-for迴圈解決部分同,部分不同的情況,主要是

for迴圈for迴圈

for (var i = 0;i < 5; i++) { document.write("外"+'<br/>'); for (var j = 0; j < 3; j++) { document.write("內"+"<br

for迴圈的幾種有意思的圖形

for迴圈巢狀用我自己的大白話來說就是一個外圈的for程式裡面一個套著一個小的for程式,如果在範圍內就來回執行計算,超出了就跳出等待了,反正就是各種for的包含執行差不多的樣子(個人見解,有錯請糾正謝謝!) 今天老師用五行五列的矩陣來講解了這一塊。 然後講述了最關鍵

Java 快速進行物件集合資料比對,For迴圈不應該成為你的選擇

在專案中,我們常常用到兩個集合的資料比對,找到其中不同的資料,在Android裡面基本上資料量也不會太大,往往大家都是直接用for迴圈巢狀搞定,大家有沒有想過 當資料量很大的時候,使用for迴圈巢狀找出不一樣的物件,需要多久。本文將為大家介紹一下如果進行高效的資料比對,以及一些特殊場景的應用,收藏起來,

java增強型for迴圈(三種集合方式)

For-Each迴圈         For-Each迴圈也叫增強型的for迴圈,或者叫foreach迴圈。    For-Each迴圈是JDK5.0的新特性(其他新特性比如泛型、自動裝箱等)。    For-Each迴圈的加入簡化了集合的遍歷。 語法如下: fo

java基礎for迴圈,各種三角形

直角三角形(實心) System.out.println("直角三角形"); for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ System.out.print("*"); } System.out.p

python之路day04--列表的增刪改查,、元組的、range、for迴圈

列表增刪改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', 'aa'] #需求:迴圈,互動,退出 # li = ['taibai','zy'

JavaScript for迴圈for迴圈

迴圈結構的概念 先來看看生活中的一些場景: (1)食堂阿姨打菜:接過顧客的餐盤→詢問菜品→打菜→遞迴餐盤,重複以上過程,直到所有顧客的菜都打完了。 (2)快遞員送快遞:檢視送件地址→趕往目的地→電話告知收件人→收件人簽收→交快遞件,重複以上過程,直到所有需要送的快遞都處理完

dos for迴圈 以及continue和break的討論

一、概述   批處理中經常會需要巢狀的for迴圈,但其用法與c語言是有區別的。在c語言中我們可以很輕鬆的寫出巢狀的for迴圈: int i; int j; for(i=0;i<5;i++) for(j=0;j<i;j++)

for迴圈實現使用 “ * ” 列印直角三角形。

public class Test { public static void main(String[] args) { int i,j; for(i=1;i&l

C++for迴圈的5種語法

[cpp] view plain copy print? #include <algorithm>#include <vector>//////////////////////////////////////////////int nArray[] = {0, 1, 2