用迭代器访问结构体vector的元素



我编写了以下代码:

namespace bcra {
// The value type of a data item.
using value_t = long;
/// This class represents a single Bar Chart.
class BarChart 
{
//=== Definition
public:
/// Represents a single bar information.
struct BarItem 
{
string label;    //!< Bar label.    
value_t value;   //!< Bar value.    
string category; //!< Bar category. 
BarItem( string l, value_t v, string c ) : label{l}, value{v}, category{c}
{/*empty*/}   
};

//== Data members
public:
/// The collection of bars items
std::vector< BarItem > bars;
};
}
int main()
{
BarChart m_barChart;

// open file txt
m_barChart.bars.push_back(...);
// close file txt
// ....
// ....
// ....
// creating a vector where I'm going to take a certain range from that main vector.
std::vector<BarChart::BarItem> bar_s;
for (auto i{ count_value }; i < (count_value + n_linhas); ++i)
{
bar_s.push_back(m_barChart.bars[i]);

}
// ....


// ...


// MY PROBLEM

std::vector < value_t>::iterator inicio2;    ??????
std::vector<value_t>::iterator fim2;       ??????
inicio2 = bar_s.begin(); ????????
// 
// ...
sort(bar_s.begin(), bar_s.end(), compare);   

我的目标如下:m_barChart将具有以下结构(string, int, string)的文本文件中的所有数据,我想做的是创建一个新的向量,我把这个更大的向量的范围(到目前为止我已经成功了),最大的问题是,我想得到这个另一个向量(bar_s),并与迭代器排序它去得到整数值,交换bar_s[0] (string, int, string)与bar_s[1](…)的所有对象,如果它更大。

要做到这一点,我需要begin()只对整数值(如=>m_bars.begin()。价值??)????我不知道该怎么办了。

在过去,这可以通过一个合适的比较函数来解决,但在现代c++中,您将使用投影:

https://en.cppreference.com/w/cpp/algorithm/ranges/sort

最新更新