2009-07-26 2 views
1

많은 온라인 판사 문제에서 입력 형식은 다음과 같습니다. 첫 번째 행은 테스트 사례의 수입니다. X를 가정 해 봅시다. 그 다음 X 줄은 각 테스트 케이스의 조건입니다.무명의 물체의 개수 생성

아래 예제에는 두 가지 테스트 케이스가 있습니다. 각 테스트 케이스는 소수점을 출력에 표시해야하는 상한 및 하한을 지정합니다.

Input: 
2 
1 10 
3 5 

Output: 
2 
3 
5 
7 

3 
5 

내 질문에 대한 답변입니다. 지금, 내 프로그램과 같이 하나의 테스트 케이스를 처리 할 수 ​​

int main() 
{ 
    TestCase t; 
    t.setRange(); 

    t.compute(); 
    t.print(); 
} 

을 어떻게 모두 't'를 명명하지 않고 테스트 케이스의 X 금액을 만들 수 있습니까?
X는 rumtime에 지정됩니다.

답변

3

std::vector<TestCase> allofem;allofem.push_back(TestCase())X 번을 만들 수 있습니다. 물론 #include <vector>을 기억하십시오. 그런 다음 allofem을 반복하여 계산하고 각 항목에 인쇄 할 수 있습니다.

+0

각 테스트 케이스를 사용하려면 어떻게해야합니까? for (int i = 0; i Steve

+0

.setRange가 각 테스트 사례 인스턴스에서 호출하려는 경우, 예, 이것은 작동 가능합니다 (C++의 표준 라이브러리에서 일반적인 스타일의 루프는 아니지만 정상적으로 작동하므로 이것이 편안 할 경우 이동하십시오. 그것을 위해!). –

+0

전형적인 스타일은 반복자를 사용하는 것이 겠지요. 내가 할게. 감사합니다 – Steve

0
for (int i = 0; i < numOfTestCases; ++i) { 
    TestCase t; 
    t.setRange(); 

    t.compute(); 
    t.print(); 
} 
0

C++에서 개체를 만들려면 두 가지 옵션이 필요합니다. 스택 또는 힙.

스택에 작성하려면 for 루프를 실행하고 일반적으로 TestCase t과 같은 변수를 선언하십시오.

다른 방법은 힙에 생성하는 것입니다. 이렇게하면 x 개의 TestCase 객체가 동적으로 생성됩니다.

TestCase ** tests = new (* TestCase)[x]; 
for (int i = 0; i < x; i++) { 
    tests[i] = new TestCase(); 
} // for i 
+0

'std :: vector'를 사용해야합니다. – GManNickG