2016-07-10 3 views
-1

그럼 안녕 얘들 아벡터의 요소가 너무 많습니다. 조합 프로그램

내가 로또 통계에 대한 프로젝트를 만드는 중이라서 기본적으로 처음 납입 등의 속성이 클래스 "kombinacije4"가 두 번째 NUM 세 번째 납입 네 번째 납입 및 날짜와 시간이 지난 나타나 얼마나 시간은 조합이 나타났습니다.

class kombinacije4 { 
public: 
    Date date; 
    Time time; 
    int first; 
    int second; 
    int third; 
    int fourth; 

    int howMuchRoundsDidntShowedUp; 
    int howMuchTimesAppeared; 
    void GetCombination(int, int, int, int); 
    void GetCombinationsAfterRound(int); 
}; 

은 그 때 나는

std::vector<kombinacije4> fourties; 

내가 아니라이 벡터가 매우 빠르고 초기화 이러한 요소 벡터를 가지고 있지만 나는 그것이 마지막 날짜와 시간을 보여 주었다 때처럼 이러한 속성을 변경하고자 할 때 나는 문제가 또는 그것이 얼마나 많이 나타 났는지는 80 개의 숫자가 있고 한 라운드에서 20 개의 숫자를 그리기 때문입니다. 이 20 개의 숫자에서 나는 4의 조합을 만들어 fourties에서 찾아서 속성을 변경해야합니다. 700 번 동안 .700 라운드가 있기 때문에. 누구든지 자신의 가치에 직접적으로 접근 할 수있는 방법을 알고 있습니까? 어쩌면 std::find 뭔가 할 수 있을까요? 분명히 나는 ​​시간 제한 문제가있다.

다른 방법으로이 프로그램을 수행하는 아이디어는 무엇입니까?

for(auto i=round.begin();i!=round.end();i++){ 
     for(auto j=i+1;j!=round.end();j++){ 
      for(auto k=j+1;k!=round.end();k++){ 
       for(auto l=k+1;l!=round.end();l++){ 
        for(auto p=fourties.begin();p!=fourties.end();p++){ 
         -if-statement 
        } 
       } 
      } 
     } 
    } 
    Obviously this block is going to pass 3 million times through the vector of million and half elements 

고맙습니다!

+0

몇 비고 : 1)'IF-statement'하는 것은 무엇입니까? 라운드의 크기를 변경하지 않으면 네 개의 네 스팅 된 루프 'i, j, k, l'대신에'if-statement'가 실행될 횟수를 미리 계산할 수 있습니다 (round.size에 따라 다릅니다)()) 하나의 루프 만 있습니다. 2) Vrijeme는 영어 단어가 아닙니다. 스택 오버플로에 대한 질문을 게시 할 때 두 가지 언어를 혼용하지 마십시오. – mercury0114

+0

if-statement는 라운드에서 그려지는 조합이 있다면, 1 580 512 조합의 전체 벡터를 통해 그 조합을 검색 할 것이고, if it is FOUND (if 문장)을 변경하면 howMuchRoundsDidntShowedUp와 howMuchTimesAppeared가 결국 날짜가되고, 시각. 나는 그 단어를 바꾸는 것을 잊어 버렸지 만 그것은 단지 하나의 단어이다. 안부 인사 –

+0

잘 모르겠지만이 라이브러리의'for_each_combination'이 도움이된다고 생각됩니다 : https://github.com/HowardHinnant/combinations –

답변

0

벡터 안에있는 객체의 멤버에 액세스하려면 myobject[iterator].membername을 사용해야합니다. 예를 들어

:

for (auto p = fourties.begin(); p!= fourties.end(); p++) 
{ 
    if (fourties.at[p].first == "your data" && 
     fourties.at[p].second == "your data" && 
     fourties.at[p].third == "your data" && 
     fourties.at[p].fourth == "your data") 
    { 
     fourties.at[p].date = 'your data'; 
     fourties.at[p].time = 'your data'; 
    } 
} 
+0

당신은 이해하지 못했습니다. 나는 벡터를 빠져 나가기 위해 더 빠른 것을 필요로한다. 다른 컨테이너 유형의 데이터 또는 다른 것? –

+0

프로그램의 'round' for 루프 각각에 if 문을 추가하고'fourties '에 해당 번호의 존재를 확인한 다음 검사가 양수이면 진행하십시오. 상황의 약 80 %에서 내부 구조의 여러 루프에 대해 네 개의 수표를 거래합니다 – maja