提问者:小点点

用C++存储不同长度的子数组


如何在C++中存储不同长度的子数组?

我知道您可以通过指定[]括号中的元素数量来存储固定大小长度的子数组。 例如,这里我指定父数组将有10个子数组,每个子数组将有2个元素单元[10][2]

string units[10][2] = {
        {"0", "zero"},
        {"1", "one"},
        {"2", "two"},
        {"3", "three"},
        {"4", "four"},
        {"5", "five"},
        {"6", "six"},
        {"7", "seven"},
        {"8", "eight"},
        {"9", "nine"}
    };

但是假设我不知道子数组的大小,而不是2,我在子数组中有x个元素。

string units[][] = {
        {"0", "z", "e", "r", "o"},
        {"1", "o", "n", "e"},
        {"2", "t", "w", "o"},
        {"3", "t", "h", "r", "e", "e"},
        ...
    };

共1个答案

匿名用户

这就是std::vector派上用场的地方:

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

int main() {
    std::vector<std::vector<std::string>> units = {
            {"0", "z", "e", "r", "o"},
            {"1", "o", "n", "e"},
            {"2", "t", "w", "o"},
            {"3", "t", "h", "r", "e", "e"},
        };

    // print result:
    for(auto& inner : units) {
        std::cout << "size " << inner.size() << ':';
        for(std::string& unit : inner) {
            std::cout << ' ' << unit;
        }
        std::cout << '\n';
    }
}

输出:

size 5: 0 z e r o 
size 4: 1 o n e 
size 4: 2 t w o 
size 6: 3 t h r e e 

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|存储|长度|子|数组)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?