這兩個數組
array<array<bool,19>,19> tablero
和
array<array<int,19>,19> lab;
具有不同的類型和存在來自一個陣列的隱式轉換到另一個。
你可以寫自己的循環,或使用一些標準的算法,因爲它是在這個示範項目
#include <iostream>
#include <array>
#include <algorithm>
#include <numeric>
int main()
{
std::array<std::array<bool,19>,19> tablero;
std::array<std::array<int,19>,19> tablero1;
std::accumulate(tablero.begin(), tablero.end(), tablero1.begin(),
[](auto it, const auto &a)
{
return std::copy(a.begin(), a.end(), it->begin()), ++it;
});
return 0;
}
你的編譯器支持自動符在lambda表達式中的代碼將彙編出。
或者相同的程序,但有一些輸出
#include <iostream>
#include <iomanip>
#include <array>
#include <algorithm>
#include <numeric>
int main()
{
const size_t N = 3;
std::array<std::array<bool, N>, N> tablero =
{
{
{ true, false, false },
{ false, true, false },
{ false, false, true }
}
};
std::array<std::array<int, N>, N> tablero1;
std::accumulate(tablero.begin(), tablero.end(), tablero1.begin(),
[](auto it, const auto &a)
{
return std::copy(a.begin(), a.end(),it->begin()), ++it;
});
for (const auto &a : tablero)
{
for (auto b : a) std::cout << std::boolalpha << b << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
for (const auto &a : tablero1)
{
for (auto x : a) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
true false false
false true false
false false true
1 0 0
0 1 0
0 0 1
兩個'建議'循環會做的伎倆。 –
你需要用那個'bool'數組做什麼?另外爲什麼你需要它是一個'int'數組呢? – Shoe
@Mark Ransom這是最有效的方法嗎? – D1X