如何使用sort对类中的向量进行排序
How to use sort to sort a vector in a class
我想知道如何使用排序函数对类中的私有向量进行排序:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class A{
private:
const vector<int> myvec;
A(vector<int>& vec) : myvec(vec) { }
public:
const vector<int>& getvec() { return myvec; }
int get_sec_element(){
int sec_ele = 0;
sort(myvec.begin(), myvec.end());
sec_ele = myvec[2];
return sec_ele;
}
};
因此,如果我创建A myvec_object
并将其填充为一个已经在其内部具有值的向量,则调用myvec_object.get_sec_ele()将返回向量中的第二个元素。然而,编译器给出了一个巨大的错误消息:"从这里实例化"。有什么问题吗?
您将myvec
声明为const
—您希望如何修改它?
声明myvec
为:
vector<int> myvec;
您已将矢量定义为const
;这使得它在初始化后不可变。如果您打算对vector进行排序,则需要对其取消const,或者复制一个来进行排序(当然,如果您打算多次执行此操作,则会很慢)。
您已经将成员变量myvec
声明为const
,但是std::sort
必须修改向量才能对其进行排序。你可以:
- 通过从其声明中删除
const
关键字使vector变为非const - 首先复制矢量并对副本进行排序
- 将
std::vector
替换为std::multiset
,这将保持项目的排序顺序。
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序