반복하는, 나는 그런사용 참조, 내가 쓰고 있어요 응용 프로그램에서 그들을
std::vector<my_struct> db;
등의 개체 내 데이터를 저장
종종 내가 그들의 요소 중 일부를 참조하고, 표준 : 설정 나는 (변경되지 않습니다하는) 벡터에 자신의 위치를 저장하는 그런
std::set<int> elements_i_like;
를 사용해야합니다, 나는
와 DB 요소에 액세스for (auto it = elements_i_like.begin(); it!=elements_i_like.end(); it++){
db[*it].do_something();
}
나는 벡터에있는 요소의 인덱스를 저장하지 않고 성능면에서 더 나은 점은 의심 스럽지만 직접적으로 참조 할 수 있습니까?
std::vector<my_struct> db; //where i store the data (edit form original question)
std::set<my_struct&> elements_i_like;//reference to the specific structs, stored in the vector, that i want to iterate on
및
for(auto it= elements_i_like.begin(); it!=elements_i_like.end(); it++){
(*it).do_something();
}
을 그리고 이렇게 어떤 단점이 될 수 있을까? 감사합니다. .
한 가지 단점은 ... 컨테이너에 –
를 참조를 저장할 수 없습니다하지만 당신은 * 할 수 있다는 것입니다 * 저장소'std :: reference_wrapper's. – chris
내 생각에 벡터는 이전 C++ 11 코드의 성능 측면에서 "배고파"입니다. 벡터는 메모리에서 연속적으로 부여되는 데이터 덩어리입니다 (일반 오래된 배열처럼). 전체 벡터를 재배치해야하는 요소를 벡터에 추가하십시오. 벡터가 커지면 높을수록 메모리 연산 측면에서 좋은 비용을 지불하게됩니다. 모두는 당신이 "성과"에 의미하는 것에 달려 있습니다. – user2485710