在使用 std::vector 巢狀結構(如 vector<vector<CString>>)時,若未正確初始化內層向量,直接透過索引存取元素會導致程式崩潰(Access Violation)。
class person {
public:
CString name;
std::vector<CString> vecfriends; // 內層向量預設為空
};
std::vector<person> vecperson;
// 新增 person 時,vecfriends 仍為空
void OnAdd() {
person A;
A.name = m_name;
vecperson.push_back(A);
i++;
}
// 直接用索引賦值,但 vecfriends[i] 不存在
void OnButton3() {
vecperson[i].vecfriends[j] = m_friends; // 崩潰點
j++;
}
OnButton3 中,先確認 vecfriends 大小足夠,或使用 push_back 新增元素。vecperson[i].vecfriends.push_back(m_friends);i 是否在有效範圍,避免索引越界。i、j 及向量大小。vecperson[i].vecfriends.size() 確認資料狀態。