2015-09-03 3 views
-6

Мне требуется создать структуру данных, и я до сих пор создал простую таблицу, состоящую из 4 разных векторов, которые представляют переменную. переменный тип, результат bool и вывод PKB. Я знаю, что это не лучший способ сделать это, но я планировал вставлять и извлекать с помощью индекса. Однако я сталкиваюсь с проблемой с идентификатором запроса, потому что я ожидаю использовать getMethods для извлечения информации. Мне нужно найти способ получить информацию гораздо более плавно, чем прокручивать по индексу. Процесс поиска будет состоять из пакета ID запроса.Требовать предложения, новые для C++

Я новичок в Cplusplus, и я не уверен, какая структура данных или как я могу ее решить. Я не ожидаю прямого ответа, но предложения было бы достаточно. Имена, которые я, наверное, никогда раньше не слышал. Было бы лучше, если бы у вас было пошаговое руководство.

--- ID запроса ---- Переменная --- Тип переменной --- результат BOOL ---- РКВ выход

---- 1 ----------- -------- x ----- присвоение ----------- true ----------- null ---------- --------------------------------------- 1 ---------- --------- w ---------- while -------------- false ---------- null - ----------------------------------------------- 1 - ---------------- ifstat ----------- if ------------- ---- false --- - ----- null ------------------------------------------ ------ 2 ------------------- x ------ назначение ----------- false ---- ------ ноль ------------------------------------------- -

+1

Если вы хотите, чтобы найти какие-то данные для конкретного идентификатора запроса, вам необходимо либо иметь массив (в вычислительном смысле науки) проиндексировано идентификатором, или использовать ассоциативный контейнер. C++ предоставляет 'std :: vector' для управления массивом гибкого размера, и вы можете использовать' std :: map' в качестве ассоциативного контейнера общего назначения. «лучше всего, если у вас есть пошаговое руководство» - вы можете найти учебник по этим типам стандартной библиотеки и как их использовать, это слишком много для детализации в S.O. ответ, а запросы за ресурсы вне сайта не соответствуют теме. –

+0

Какова должна быть эта диаграмма? Пожалуйста, разместите его в удобном для чтения формате. Вставьте отформатированную диаграмму, пометьте ее мышью и нажмите на инструмент '{}' или введите Ctl-k, чтобы пометить его как буквенный код. – Barmar

+0

'std :: map' или' std :: unordered_map' похоже, то, что вы ищете – john

ответ

0

Я не думаю, что я полностью понимаю вопрос. Но я думаю, что вы используете стандартную библиотеку, которая содержит определение вектора, то есть вам придется использовать геттеры и сеттеры этого std. Я бы просто сделал функцию с быстрым алгоритмом поиска, который использует геттер, уже определенный в векторе.

1

С учетом того, что я понимаю, прочитав ваш вопрос, вы можете использовать std::multimap, используя int и struct. Например

// C++11 for nullptr 
#include <string> 
#include <map> 

struct Data { 
    std::string variable; 
    std::string variableType; 
    bool  result; 
    PKB   output; // I suppose PKB is an already defined type 

    Data(std::string var, std::string varType, bool res = false, PKB out = nullptr) : 
     variable(var), variableType(varType), result(res), output(out) {} 

    inline bool operator <(const Data & rhs) { 
     . . . // Add your own comparison logic 
    } 
}; 

std::multimap<int, Data> myMap; 
myMap.insert((1, Data("x", "assignment", true))); 
myMap.insert((1, Data("w", "while"))); 
myMap.insert((1, Data("ifstat", "if"))); 
myMap.insert((2, Data("x", "assignment"))); 
Смежные вопросы