2014-07-12 3 views
1

C++에서 다른 크기의 열을 사용하여 2 차원 배열을 초기화하는 방법이 있습니까? 나는 콘솔 카드 게임을 만들려고 노력한다. 나는 전에 이런 짓을 한 적이있다.C++에서 다른 열 크기로 2 차원 배열을 초기화하십시오.

static string const group[7][]; 

string const Cards::group = { 
      { "AA", "KK", "AKs" }, 
      { "QQ", "JJ", "AK", "AJs", "KQs", "AQs" }, 
      { "TT", "AQ", "ATs", "KJs", "QJs", "JTs" }, 
      { "99", "88", "AJ", "AT", "KQ", "KTs", "QTs", "J9s" , "T9s" , "98s" }, 
      { "77", "66", "A9s", "A5s", "A4s", "A3s", "A2s", "K9s", "KJ", "KT", "QJ", "QT", "Q9s", "JT", "QJ", "T8s", "97s", "87s", "76s", "65s"}, 
      { "55", "44", "33", "22", "K9", "J9", "86s"}, 
      { "T9", "98", "85s"} 
    }; 

작동하지 않습니다. 어레이가 추가로 정적이고 일정해야하지만 좋지는 않을 것입니다. 가장 중요한 것은 코드 작업을 만드는 것입니다.

나는 모든 종류의 도움에 감사 할 것입니다.

+0

s0mehow, 귀하의 선언과 정의는 메쉬하지 않습니다 ... – Deduplicator

답변

2

C++의 배열은 진정으로 동적은 아닙니다. 크기를 늘리거나 줄일 수 없습니다. 게다가, 정적 배열의 차원은 선언시에 알아야합니다. 동적으로 할당 된 배열은 groupstring**으로 선언하고 나중에 적절한 크기의 메모리로 초기화하여 사용할 수 있습니다. 당신은 할 수있는,

static std::vector<std::vector<std::string>> const group; 

std::vector<std::vector<std::string>> Cards::group = { 
    { "AA", "KK", "AKs" }, 
    { "QQ", "JJ", "AK", "AJs", "KQs", "AQs" }, 
    { "TT", "AQ", "ATs", "KJs", "QJs", "JTs" }, 
    { "99", "88", "AJ", "AT", "KQ", "KTs", "QTs", "J9s" , "T9s" , "98s" }, 
    { "77", "66", "A9s", "A5s", "A4s", "A3s", "A2s", "K9s", "KJ", "KT", "QJ", "QT", "Q9s", "JT", "QJ", "T8s", "97s", "87s", "76s", "65s"}, 
    { "55", "44", "33", "22", "K9", "J9", "86s"}, 
    { "T9", "98", "85s"} 
}; 
+0

당신은 당신이 (중괄호 값 목록을 사용하여) 이런 식으로하는 벡터를 초기화하기 위해 C++ (11)를하지 않는해야합니까? 그래서 컴파일러에 달려 있습니다. 우리 중 일부는 현재 VC++ 2010을 사용하고 있습니다. –

1

당신은 대신

string group[7][]; 

을 수행 할 수 없습니다 우리가 메모리 관리를 활용할 수 있기 때문에 근본적으로 동등하지만이 깨끗하기 때문에 선호하는 2 차원 벡터를 사용할 수 있습니다

string group[][7]; 

다차원 C 스타일 어레이의 경우.

마지막 차원에서 크기가 다른 다차원 배열이 정말로 필요한 경우 std :: vector>를 STL과 함께 사용할 수 있습니다.

2

당신은 사용할 수 없습니다

string group[7][] = 

그러나, 당신이 사용할 수 있습니다

std::vector<std::string> group[] = 

여기에 작동하는 프로그램입니다.

#include <iostream> 
#include <string> 
#include <vector> 

std::vector<std::string> group[] = 
{ 
    { "AA", "KK", "AKs" }, 
    { "QQ", "JJ", "AK", "AJs", "KQs", "AQs" }, 
    { "TT", "AQ", "ATs", "KJs", "QJs", "JTs" }, 
    { "99", "88", "AJ", "AT", "KQ", "KTs", "QTs", "J9s" , "T9s" , "98s" }, 
    { "77", "66", "A9s", "A5s", "A4s", "A3s", "A2s", "K9s", "KJ", "KT", "QJ", "QT", "Q9s", "JT", "QJ", "T8s", "97s", "87s", "76s", "65s"}, 
    { "55", "44", "33", "22", "K9", "J9", "86s"}, 
    { "T9", "98", "85s"} 
}; 

int main() 
{ 
    for (auto it1 : group) 
    { 
     for (auto it2 : it1) 
     { 
     std::cout << it2 << " "; 
     } 
     std::cout << std::endl; 
    } 
} 
관련 문제