c++ - 算法中的排序函数返回错误
问题描述
我是 C++ 新手。我正在尝试使用algorithm
头文件和使用sort
函数对数组进行排序。但我收到以下错误:
error: member reference base type 'int *' is not a structure or union
。是否有一些语法错误
我通过以下方式声明和初始化数组:
for(int i = 0; i < n; i++) {
cin >> ptr[i];
}
这是排序功能:
sort(ptr.begin(), ptr.end());
编辑:
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
int main() {
int n;
cin >> n;
int* ptr = new int[n];
for(int i = 0; i < n; i++) {
cin >> ptr[i];
}
sort(ptr.begin(), ptr.end());
for(int i = 0; i < n; i++) {
cout << ptr[i];
}
return 0;
}
解决方案
ptr.begin()
并且ptr.end()
不正确。
ptr
是类型int*
。指针没有成员函数。您可以改用以下内容。
sort(ptr, ptr+n);
假设n
是 5.ptr
指向 5 int
s 数组的第一个元素。
ptr
|
v
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
当你使用
sort(ptr, ptr+n);
您要求该函数对从 开始ptr
和结束的所有对象进行排序ptr+n
。
ptr ptr+n
| |
v v
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
请注意,该元素ptr[n]
无效,sort
不会尝试访问它。最多可以访问ptr[n-1]
。
推荐阅读
- xpath - Xpath importxml 谷歌电子表格
- python - 使用替换功能计算 Pandas 数据框列
- javascript - 用postMessage检查window.parent的起源有什么意义吗?
- javascript - 如何在浏览器控制台中检测按键事件?
- java - 使用流的 BlockRealMatrix 对象的平均对应行
- python-3.x - 动态 SQLAlchemy ORM 关系生成
- ruby-on-rails - 使用 sunspot_rails 在 solr 中为日期时间字段的输入字符串添加字段“created_at_d”时出错
- c# - Azure 平台/Dotnet 核心上的可靠图像处理
- c - fgets 存储来自文本文件的未知数据
- django - Django - Django 如何访问 sqlite 中的数据?