2012-01-31 78 views
0

我有一個基本的工作,只產生一個隨機的10個狀態序列,0 =產生,1 =消耗。對於每0,我需要填充該列表,如果它完全沒有做任何事情,併爲1,清空列表...如果它已經是空的,什麼都不做。這個C++列表有什麼問題?

我做了簡單的pop_front,push_front把東西放入列表中......但我不知道爲什麼這是錯誤的......任何想法?

#include <iostream> 
#include <list> 
#include <cstdlib> 

using namespace std; 

int main(){ 
    list<int> MyList; 
    int random; 
    for (int i=10; i>0; i--){ 
     random = rand() % 2; 
     if(random == 0){ 
      if(MyList.front() == NULL){ 
       for(int k=10; k>0; k--){ 
        MyList.push_front(k); 
       } 
      } 
     } else if(random == 1){ 
      if(MyList.front() != NULL){ 
       for(int j=10; j>0; j--){ 
        MyList.pop_front(); 
       } 
      } 
     } 


     std::cout << random << ", "; 
    } 
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
    return 0; 
} 
+2

你知道它有什麼問題嗎?當你運行它時會發生什麼,以及它與你期望的有什麼不同? – 2012-01-31 05:21:58

+0

是什麼讓你覺得這是錯的? – Borealid 2012-01-31 05:22:28

回答

1

list.front()返回的第一個元素的引用,我想你想使用list.empty()檢測的爲空或滿(在你是一個或另一個您的特定情況下的狀態,沒有灰色地帶)。

另外,它在某些圈子中被「使用命名空間標準」所折服,並且您沒有包含numeric_limits的頭文件(儘管如果您只是將其用作「按任意鍵繼續「IDE中的方法)。

而且沒有必要爲random爲一種,因爲它總是會是1或0。換句話說,如果它是0的if位將執行的檢查,和else位將否則執行(當它是1)。

解決所有這些問題給你:

#include <iostream> 
#include <list> 
#include <limits> 
#include <cstdlib> 

int main (void) { 
    int random; 
    std::list<int> MyList; 

    for (int i = 10; i > 0; i--) { 
     random = rand() % 2; 
     if (random == 0) { 
      if (MyList.empty()) { 
       for (int k = 10; k > 0; k--) { 
        MyList.push_front (k); 
       } 
      } 
     } else { 
      if (!MyList.empty()) { 
       for (int j = 10; j > 0; j--) { 
        MyList.pop_front(); 
       } 
      } 
     } 
     std::cout << random << ", "; 
    } 

    std::cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n'); 
    return 0; 
} 
+0

謝謝你,我的朋友......你實際上忽略了隨機的聲明,但除此之外,這是有效的;)我感謝幫助 – 2012-01-31 06:13:28

+0

@Gal:是的,我陷入了其他中間編輯。我想擺脫它,但後來發現它用在'cout <<'語句中,所以應該留下。所以我把聲明放回去了。 – paxdiablo 2012-01-31 06:25:48

0

很顯然,這條線是不正確的:

if(MyList.front() == NULL){ 

由於MyList.front()是 「int」 類型的參考。