Не можете получить значения из моего скользящего окна?

В настоящее время я реализую функцию скользящего окна для vector<double>, Проблема в том, что я не могу cout ценности? Когда я вывожу его, я, кажется, получаю местоположение памяти, а не фактические значения ..

Мне нужно обработать данные, из которых состоит окно, поэтому доступ к значениям будет аккуратным.

typedef double SAMPLE;
std::vector<std::vector<SAMPLES> > loaded_files;
//Some init
std::vector<SAMPLE>::iterator it;
for (it = loaded_file.samples[0].begin() ; (it + (NUM_SECONDS*SAMPLE_RATE)) != loaded_file.samples[0].end(); ++it)
{
auto window = *it;
std::cout << "printing the window!" << std::endl;
std::cout << &(window) << std::endl; // prints out memory location?
}

2

Решение

Каждый раз, когда вы печатаете содержимое окна, вам нужно перебирать само окно. Это можно сделать, изменив содержимое вашего for петля вот так:

typedef double SAMPLE;
std::vector<<SAMPLES>> loaded_files;
//Some init
std::vector<SAMPLE>::iterator it;
for (it = loaded_file.samples[0].begin(); (it + (NUM_SECONDS*SAMPLE_RATE)) != loaded_file.samples[0].end(); ++it)
{
std::cout << "printing the window!" << std::endl;
std::vector<SAMPLE>::iterator wit; // window iterator
for (wit = it; wit != it + (NUM_SECONDS*SAMPLE_RATE); ++wit)
{
std::cout << *wit << ',';
}
std::cout << std::endl;
}

Обратите внимание, что ширина окна (NUM_SECONDS*SAMPLE_RATE), Это может быть сохранено в такой переменной, как window_widthили подобное, чтобы помочь с удобочитаемостью.

1

Другие решения

Непонятно, какой объект окна содержит. Но в своем заявлении ниже вы предоставляете адрес окна. Следовательно, он печатает адрес вместо значения.

std::cout << &(window) << std::endl; // prints out memory location? YES

Попробуйте с приведенным ниже утверждением: —

std::cout << window << std::endl; // prints out value here
0

По вопросам рекламы [email protected]