응용 프로그램이 속도가 중요한 경우 [] 연산자를 사용하여 조언합니다. 원래 객체의 총 3 복사본을 생성하고 그중 2 개는 임시 객체이며 조만간 파괴됩니다.
그러나 insert ()에서 원래 오브젝트의 사본 4 개가 작성되고 그 중 3 개는 임시 오브젝트 (필수 "임시"일 필요는 없음)이며 파괴됩니다.
1. 한 개의 객체 메모리 할당 2. 한 개의 추가 생성자 호출 3. 한 개의 추가 소멸자 호출 4. 한 개의 개체 메모리 할당 해제
객체가 크면 생성자가 일반적이며 소멸자는 많은 리소스 확보를 수행합니다. 가독성에 관해서는, 나는 둘 다 공평하다고 생각합니다.
같은 질문이 내 마음에 들었지만 가독성이 아니라 속도입니다. 여기 내가 언급 한 요점에 대해 알게 된 샘플 코드가 있습니다.
class Sample
{
static int _noOfObjects;
int _objectNo;
public:
Sample() :
_objectNo( _noOfObjects++ )
{
std::cout<<"Inside default constructor of object "<<_objectNo<<std::endl;
}
Sample( const Sample& sample) :
_objectNo( _noOfObjects++ )
{
std::cout<<"Inside copy constructor of object "<<_objectNo<<std::endl;
}
~Sample()
{
std::cout<<"Destroying object "<<_objectNo<<std::endl;
}
};
int Sample::_noOfObjects = 0;
int main(int argc, char* argv[])
{
Sample sample;
std::map<int,Sample> map;
map.insert( std::make_pair<int,Sample>( 1, sample) );
//map[1] = sample;
return 0;
}