#include <stdio.h>
Class XObject
{
int id;
char *type;
}
Class XSubObject : XObject
{
int remark;
char* place;
}
** Извините за мой плохой пример, но более или менее данные выглядят так. std :: векторные объекты; данные, хранящиеся в объектах, как это: #1=XObject(1001,"chair"), #2=XObject(1002,"spoon"), #3=XSubObject(1004,"table",2,"center"), #4=XSubObject(1005,"item",0,"left")
и so..onКак уменьшить сложность времени от O (n) до O (1) для этих списков пользовательских объектов?
мы CNA имеют разные XObjects с теми же типами.
Class XStructure
{
XObject parent;
}
Class XStructureRow
{
XObject child;
XStructure parentStruct;
}
std :: векторные структуры; данные, хранящиеся в структурах, как это: #5=XStructure(NULL), #7=XStructure(#1),#8=XStructure(#2),#9=XStructure(#3),#10=XStructure(#4)
и so..on
станд :: вектор structurerows; данные, хранящиеся в структурах, как это: XStructureRow(#4,#5), XStructureRow(#2,#1),XStructureRow(#2,#7),XStructureRow(#3,#10),XStructureRow(#4,#8)
и so..on
Как я могу написать быстрый alogirthm, который начинается с XObject и находит его, в котором structurerow и извлечение его структуры и извлечения его родителя. Например, я хочу вернуть всех родителей объекта с именем «table» и вернуть родителям имя «стул».
Мой написанный алгоритм:
std::vector<XObject> getParents(XObject "chair")
{
std::vector<XObject> objs;
for (int i=0;i<structurerows.size() ;i++)
{
XStructurerow sr=structurerows[i];
XStructutre parent= sr.fetchParent();
if(parent!=NULL)
{
if(parent.fetchName()=="chair")
objs.push_back(parent);
}
}
return objs;
}
если я должен извлечь все объекты родителей, то это занимает слишком много времени, если у меня есть огромные данные. Я имею в виду, есть ли какое-либо решение, которое помогает находить родительские объекты с помощью O (1), вместо того, чтобы повторять полный цикл? Я хочу получить этих родителей с минимальными итерациями. Здесь сложность O (n), которую я не удовлетворяет. Надеюсь, я сделал несколько действительных моментов. Предложения пожалуйста.
вы можете перечитать свой текст, исправить опечатки и расширить пример для ясности? –
После того, как вы прочитали сообщение, я хочу сказать «переключиться на gentoo linux, перекомпилировать всю систему с помощью соответствующих флагов и набора команд, и вы получите 6% -ную производительность», но, однако, попробуйте некоторые флаги компилятора, они хороши – pyCthon
Это может ' t действительно работает в любом случае, как вы это делаете здесь: для хранения объектов _derived_ из 'XObject' вам нужны полиморфные указатели (' unique_ptr', вероятно, будет правильным здесь), невозможно просто сохранить по значению. – leftaroundabout