如何使用矢量元素将项目添加到结构中?
Posted
技术标签:
【中文标题】如何使用矢量元素将项目添加到结构中?【英文标题】:How can I add an item to the structure with vector elements? 【发布时间】:2019-12-16 17:03:59 【问题描述】:我想添加一个向量的峰值位置和峰值编号,但是我找不到添加元素然后返回它的方法,或者写在控制台上。
#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]) 应该返回 pos: [3, 7], peaks: [6, 3 ]
【问题讨论】:
这段代码有什么问题?看起来不错。问题只是如何打印数据? 除了你的向量会与你期望的相反,它应该给你正确的数据。只需在 PeakData 结构中添加一个打印例程即可打印向量。 @churill 是的,问题是我不知道如何打印数据。 @Pilv 请更具体一些。您尝试过什么,以什么方式不起作用?你只需要std::cout <<
和你的向量循环来以你想要的任何方式打印它。
【参考方案1】:
将此添加到您的主要功能中:
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;
也尝试通过引用或指针传递参数。
【讨论】:
请不要回答两次。您可以选择编辑您的答案,或者删除这个旧答案并保留改进后的版本:)以上是关于如何使用矢量元素将项目添加到结构中?的主要内容,如果未能解决你的问题,请参考以下文章