如何使用矢量元素将项目添加到结构中?

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 &lt;&lt; 和你的向量循环来以你想要的任何方式打印它。 【参考方案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;

也尝试通过引用或指针传递参数。

【讨论】:

请不要回答两次。您可以选择编辑您的答案,或者删除这个旧答案并保留改进后的版本:)

以上是关于如何使用矢量元素将项目添加到结构中?的主要内容,如果未能解决你的问题,请参考以下文章

使用MATLAB GUI将元素添加到矢量中

如何使用 if 条件将 django 数组元素添加到 js 数组中

如何将矢量元素提供给模板

项目内部使用阿里图标

如何打印成对矢量数组的元素?

c#如何将结构的引用添加到数组或列表?