2012-01-31 70 views
6

Tôi đã tìm thấy rất nhiều chủ đề như thế này, nhưng nó quá phức tạp đối với tôi.C++ kiểm tra xem phần tử có tồn tại trong mảng

Cách kiểm tra xem phần tử có tồn tại trong một mảng không?

đầu tiên tôi tuyên bố một mảng và đặt giá trị trong nó

for(int l=0;l<=21;l++){ 
     skirt[l]=l; 
    } 

và sau đó với for khác tôi muốn kiểm tra xem bất kỳ yếu tố đó tồn tại trong mảng khác là trong mảng skirt[];

Có một cách để viết nó như thế này?

for(int k=0;k<=n;k++){ 
    if(skaiciai[k]!=skirt[k]){ 
     counter++; 
    } 
} 

Trả lời

3

Vòng lặp:

for(int k=0;k<=n;k++){ 
    if(skaiciai[k]!=skirt[k]){ 
     counter++; 
    } 
} 

sẽ chỉ so sánh các yếu tố ở các chỉ số tương tự trong mảng. Lồng for vòng được yêu cầu với bên ngoài iterating for lặp trên các yếu tố trong một mảng và khu vực nội for vòng iterating qua các yếu tố trong mảng khác:

for (int k_skirt = 0; k_skirt <= n; k_skirt++) 
{ 
    for (int k_skaiciai = 0; k_skaiciai <= n; k_skaiciai++) 
    { 
     if(skaiciai[k_skaicia] == skirt[k_skirt]){ 
      counter++; 
     } 
    } 
} 
3

Bạn chỉ cần sử dụng thuật toán std :: count.

auto counter = std::count(skirt, skirt+skirt_size); 
+0

Điều này sẽ không biên dịch, vì bạn bỏ qua bất kỳ giá trị hoặc biến vị ngữ nào để so sánh; không có quá tải của 'std :: count()' chỉ mất 2 đối số, vì nó cần thứ ba để cho nó _what_ đếm. Và đó là cách đếm bằng cách làm tổ, đó là câu hỏi. –

5

Cách tốt nhất để làm điều này sẽ được sử dụng thuật toán tiêu chuẩn, thay vì vòng lặp viết tay:

if (std::find_first_of(
     skirt, skirt + skirt_size, 
     skaiciai, skaiciai + skaiciai_size) 
    != skirt + skirt_size) 
{ 
    //skirt contained an element from skaiciai 
} 
Các vấn đề liên quan