Давайте предположим, что у меня есть std :: map фактических данных, хранящихся в непрерывной части памяти, которую я хочу перебрать, пропуская несколько элементов.У меня есть функция, собирающая вектор указателей на элементы карты.Мой вопрос таков: Будет ли итерация по этому списку указателей и следование им частым ошибкам в кэше? А теперь давайте предположим, что вся карта помещается в несколько строк кэша.
Редактировать: пример кода.Редактор фрагментов кода не работает на сенсорных устройствах, таких как мое, но я постараюсь отформатировать его в удобочитаемом виде.
int main()
{
std::map<unsigned int, MyStruct> map;
//Fill this map with useful data.
std::vector<MyStruct*> ptrvec; //vector of pointers to pass around. Will not be processed right here, that's just to simplify the example code
for(MyStruct i : map)
{
if(/*some condition to select structs*/)
{
ptrvec.push_back(&i);
}
}
for(MyStruct* i : ptrvec)
{
//Do some processing on MyStruct
}
}