鑑於這個問題的 Tag 有 C++,一律使用 memcpy 和 memcmp 還是有風險的。比如一個 std::string 的 2 維陣列……
理論上安全且高效的複製應該用 std::copy,而比較相等則用 std::equal。
不過多維陣列的用法寫起來略扭曲……例如:
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
std::string source[2][3] = {
{ "a", "b", "c" },
{ "A", "B", "C" }
};
std::string destination[2][3];
size_t numElements = sizeof(source) / sizeof(source[0][0]);
// 複製
std::copy(&source[0][0], &source[0][0] + numElements,
&destination[0][0]);
// 比較
bool isEqual = std::equal(&source[0][0], &source[0][0] + numElements,
std::cout << "isEqual: " << isEqual << std::endl;
}
鑑於這個問題的 Tag 有 C++,一律使用 memcpy 和 memcmp 還是有風險的。比如一個 std::string 的 2 維陣列……
理論上安全且高效的複製應該用 std::copy,而比較相等則用 std::equal。
不過多維陣列的用法寫起來略扭曲……例如:
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
std::string source[2][3] = {
{ "a", "b", "c" },
{ "A", "B", "C" }
};
std::string destination[2][3];
size_t numElements = sizeof(source) / sizeof(source[0][0]);
// 複製
std::copy(&source[0][0], &source[0][0] + numElements,
&destination[0][0]);
// 比較
bool isEqual = std::equal(&source[0][0], &source[0][0] + numElements,
&destination[0][0]);
std::cout << "isEqual: " << isEqual << std::endl;
}