如何将项目添加到具有矢量元素的结构中?
How can I add an item to the structure with vector elements?
我想添加矢量的峰值位置和峰值编号,但我找不到添加元素然后 return 的方法,或者将其写入控制台。
#include <iostream>
#include <vector>
using namespace std;
struct PeakData {
vector<int> pos, peaks;
};
PeakData pick_peaks(vector<int> v) {
PeakData result;
for (int i = 1; i < v.size() - 1; i++) {
if ((v[i] > v[i - 1]) && (v[i] > v[i + 1])) {
result.peaks.push_back(v[i]);
result.pos.push_back(i);
}
}
return result;
}
示例:pickPeaks([3, 2, 3, 6, 4, 1, 2, 3, 2, 1, 2, 3]) 应该 return {pos: [3, 7],峰值:[6, 3]}
将此添加到您的主要功能:
int main()
{
vector<int> a = {3, 2, 3, 6, 4, 1, 2, 3, 2, 1, 2, 3};
PeakData stPickPeaks = pick_peaks(a);
vector<int> :: iterator itr;
for(itr = stPickPeaks.pos.begin(); itr<stPickPeaks.pos.end(); itr++)
{
cout <<*itr<<endl;
}
for(itr = stPickPeaks.peaks.begin(); itr<stPickPeaks.peaks.end(); itr++)
{
cout <<*itr<<endl;
}
return 0;
}
也尝试通过引用或指针传递参数。
我想添加矢量的峰值位置和峰值编号,但我找不到添加元素然后 return 的方法,或者将其写入控制台。
#include <iostream>
#include <vector>
using namespace std;
struct PeakData {
vector<int> pos, peaks;
};
PeakData pick_peaks(vector<int> v) {
PeakData result;
for (int i = 1; i < v.size() - 1; i++) {
if ((v[i] > v[i - 1]) && (v[i] > v[i + 1])) {
result.peaks.push_back(v[i]);
result.pos.push_back(i);
}
}
return result;
}
示例:pickPeaks([3, 2, 3, 6, 4, 1, 2, 3, 2, 1, 2, 3]) 应该 return {pos: [3, 7],峰值:[6, 3]}
将此添加到您的主要功能:
int main()
{
vector<int> a = {3, 2, 3, 6, 4, 1, 2, 3, 2, 1, 2, 3};
PeakData stPickPeaks = pick_peaks(a);
vector<int> :: iterator itr;
for(itr = stPickPeaks.pos.begin(); itr<stPickPeaks.pos.end(); itr++)
{
cout <<*itr<<endl;
}
for(itr = stPickPeaks.peaks.begin(); itr<stPickPeaks.peaks.end(); itr++)
{
cout <<*itr<<endl;
}
return 0;
}
也尝试通过引用或指针传递参数。