возвращать строковые массивы в c ++ - PullRequest
0 голосов
/ 06 октября 2018

Я новичок в c ++, после попытки развёртывания на ходу я подумал, что с таким же успехом можно выучить c ++, поскольку кривая обучения будет настолько крутой, как только я начну опускаться по уровням абстракции, которые я использую для простой обработки динамических массивов в php.Я не могу понять указатели, а также распределение памяти и проблемы области видимости, связанные с c ++, вот моя первая попытка:

string* Deck() {
    // array of card rank and vlaue, seperated by a period, used as a delimiter for evaluting the players hands
    string* Deck = new string[52] ;
    Deck = {
        "A.H","2.H","3.H","4.H","5.H","6.H","7.H","8.H","9.H","10.H","J.H","Q.H","K.H",
        "A.S","2.S","3.S","4.S","5.S","6.S","7.S","8.S","9.S","10.S","J.S","Q.S","K.S",
        "A.D","2.D","3.D","4.D","5.D","6.D","7.D","8.D","9.D","10.D","J.D","Q.D","K.D",
        "A.C","2.C","3.C","4.C","5.C","6.C","7.C","8.C","9.C","10.C","J.C","Q.C","K.C",
    };

    return Deck;
}

int main()
{
    string* Deck = Deck();
    cout << *Deck[23] << endl;
    return 0;
}

компилятор выдает мне различные ошибки, я пытался просто вернуть указатели, но я узнал ообласть действия в этой статье Возвращает строковый массив в функции C ++

Есть много статей, касающихся int как типа данных, но объяснения strings и int=>string редки, так как я предполагаю, что все предполагают, что дажеНуб мог разобраться, но я смотрел бесчисленные часы видео на YouTube и до сих пор не могу понять.Спасибо.

1 Ответ

0 голосов
/ 06 октября 2018

"Я привык легко обрабатывать динамические массивы в php, однако не могу понять указатели, распределение памяти и проблемы с областями действия, связанные с c ++"

При работе с динамическими массивами вам не нужно обрабатывать «указатели, проблемы с выделением памяти и областями видимости» в C++ больше, чем в PHP.

Просто используйте std :: vector , он управляет вашим массивом:

std::vector<std::string> GetDeck() {

    // array of card rank and vlaue, seperated by a period, used as a delimiter for evaluting the players hands
    std::vector<std::string> Deck =
    {
        "A.H","2.H","3.H","4.H","5.H","6.H","7.H","8.H","9.H","10.H","J.H","Q.H","K.H",
        "A.S","2.S","3.S","4.S","5.S","6.S","7.S","8.S","9.S","10.S","J.S","Q.S","K.S",
        "A.D","2.D","3.D","4.D","5.D","6.D","7.D","8.D","9.D","10.D","J.D","Q.D","K.D",
        "A.C","2.C","3.C","4.C","5.C","6.C","7.C","8.C","9.C","10.C","J.C","Q.C","K.C",
    };

    return Deck;
}

int main()
{
    auto Deck = GetDeck();
    std::cout << Deck[23] << '\n';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...