我怎样才能在 C++ 中使用 vector 制作这样的表格:
65 A
66 B
67 C
我是用这样的动态二维数组完成的:
int** ary = new int*[2];
for (int i = 0; i < size; ++i)
ary[i] = new int[size];
// fill the array
for (int i = 0; i < size; i++) {
ary[i][0] = ascii_values[i];
}
for (int i = 0; i < size; i++) {
ary[i][1] = ascii_chars[i];
}
我怎样才能用 vector 做到这一点? 我正在考虑将两个 vector 放在第三个 vector 中,但我不知道这是否可能。 附言一切都必须是动态的,因为我将从文件中导入数据 请帮助:)
最佳答案
您可以使用 std::pair
的 vector 轻松实现上述行为。查看demo :
#include <utility>
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
std::vector<std::pair<int,char>> result;
std::vector<int> ascii_vals {65, 66, 67};
std::vector<char> ascii_chars {'a', 'b', 'c'};
auto ItA = ascii_vals.begin();
auto ItB = ascii_chars.begin();
while(ItA != ascii_vals.end() && ItB != ascii_chars.end())
{
result.push_back(std::make_pair(*ItA,*ItB));
if(ItA != ascii_vals.end())
{
++ItA;
}
if(ItB != ascii_chars.end())
{
++ItB;
}
}
for(std::vector<std::pair<int, char> >::iterator it = result.begin(); it != result.end(); it++)
std::cout << "(" << it->first << ", " << it->second << ")" << std::endl;
return 0;
}
上面的代码会打印:
(65, a)
(66, b)
(67, c)
关于C++多维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790300/