Трудно предоставить полный код, не зная вашей клиентской библиотеки SQL - это влияет на то, как вы заполняете vector
s, но в основном вы перебираете строки, считанные из БД, делая push_back
на ваших двух vector
s длязначения, полученные в каждой строке.
Основной вопрос: как вы собираетесь обрабатывать возвращаемые параметры?У вас есть два vector
с, как вы указали здесь проблему.Вы могли бы добиться этого, если бы вызывающая сторона создала vector
s, а затем функция заполнила их, например:
#include <vector>
// function declaration - return false on error, or throw exception if preferred
bool populate(std::vector<double>& dates, std::vector<int>& values);
// calling code
std::vector<double> myDates;
std::vector<int> myValues;
// if you know the row count is 300 ahead of time, do this
unsigned int rowCount;
// rowCount gets set up, to 300 in this example
myDates.reserve(rowCount);
myValues.reserve(rowCount);
// Populate vectors, checking for error (false = error)
if (populate(myDates, myValues)) {
// work with the returned data
}
Для дополнительного кредита из-за лучшей инкапсуляции или данных строки, я был бы склонениспользовать вектор структур POD.Преимущество этого состоит в том, что каждая дата и значение остаются тесно связанными - вы можете расширить это до полноценного класса, если у вас есть операции, которые вы хотите выполнить для каждой строки.Скрывайте данные за получателями, желательно.
struct Row {
public:
double date;
int value;
};
bool populate(std::vector<Row>& rows);