如何在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"},
...
};
这就是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