Чаро дар забони C++ синфи vector тавассути механизмии такрор кардани маълумот ҳангоми нусхабардорӣ ё ҷойгиркунӣ амалӣ карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар C++ класи std::vector бо нусхаи додаҳо дар вақти амали нусхагирӣ ё ҷойгиркунӣ амал мекунад, то мустақилонагии объектҳо ва бехатарии идоракунии хотираро таъмин кунад. Ҳангоми нусхагирӣ, вектор буфери худро месозад ва унсурҳоро нусхабардорӣ мекунад, то ки тағирот дар як объект ба дигар таъсир нарасонад. Ин масъалаҳои озод кардани дукаратаи хотираро пешгирӣ мекунад ва рафторро пешгӯишаванда месозад.
Ин муносибат ба семантикаи намудҳои арзишӣ дар C++ мувофиқ аст, ки дар он нусхаи объект бояд комилан мустақил бошад. Ҳатто агар ин ба хароҷоти иловагӣ дар вақт ва хотира оварда расонад, идоракунии захираҳоро содда мекунад ва хатоҳоро пешгирӣ мекунад.
Масалан, нусхаи вектор:
#include <vector>
#include <iostream>
int main() {
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = v1; // нусхаи додаҳо сохта мешавад
v2[0] = 10;
std::cout << v1[0] << " " << v2[0] << std::endl; // Натиҷа: 1 10
}
Ин ҷо, v1 ва v2 буферҳои гуногун доранд, тағирот дар v2 ба v1 таъсир намерасонад.