无法从我的滑动 window 访问值?
Cant acess the values from my sliding window?
我目前正在为 vector<double>
实现滑动 window 功能。问题是我似乎无法 cout
这些值?当我输出它时,我似乎得到了记忆位置,而不是实际值..
我需要处理 window 包含的数据,因此可以访问这些值。
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?
}
不清楚 window 对象持有什么。但是在您的以下声明中,您提供了 window 的地址。因此它打印的是地址而不是值。
std::cout << &(window) << std::endl; // prints out memory location? YES
尝试使用以下语句:-
std::cout << window << std::endl; // prints out value here
每次打印 window 内容时,都需要遍历 window 本身。这可以通过像这样更改 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;
}
注意 window 的宽度是 (NUM_SECONDS*SAMPLE_RATE)
。这可以存储在像 window_width
或类似的变量中以帮助提高可读性。
我目前正在为 vector<double>
实现滑动 window 功能。问题是我似乎无法 cout
这些值?当我输出它时,我似乎得到了记忆位置,而不是实际值..
我需要处理 window 包含的数据,因此可以访问这些值。
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?
}
不清楚 window 对象持有什么。但是在您的以下声明中,您提供了 window 的地址。因此它打印的是地址而不是值。
std::cout << &(window) << std::endl; // prints out memory location? YES
尝试使用以下语句:-
std::cout << window << std::endl; // prints out value here
每次打印 window 内容时,都需要遍历 window 本身。这可以通过像这样更改 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;
}
注意 window 的宽度是 (NUM_SECONDS*SAMPLE_RATE)
。这可以存储在像 window_width
或类似的变量中以帮助提高可读性。