使用 #include <algorithm>的 C++ 编译错误
c++ compilation error using #include<algorithm>
每当我尝试编译程序时,我都会遇到编译错误。
当我尝试删除该程序中的"排序"功能时,一切都很好,当我使用"排序"功能时出现问题。
有没有其他方法可以解决此问题,或者我无法使用 #include?当我使用"交换"功能时也是如此。
这是代码
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <vector>
#include <string>
using namespace std;
class tropical
{
public:
string name;
int price;
};
bool sortByName(tropical &t1, tropical &t2); //
void displayfruits(vector<tropical> fruitlist)
{
cout << "Name ttPrice" << endl << "==========t=====" << endl;
for(int i=0;i<10;i++) //displays all fruits' names and prices
{
cout << fruitlist[i].name << " t" << fruitlist[i].price << endl;
}
cout << endl;
}
int main()
{
int sortchoice;
string searchfruit;
string fruitname[] = {"Avocado", "Papaya", "Grapefruit", "Pineapple", "Jackfruit", "Orange", "Honeydew", "Mangosteen", "Banana", "Durian"};
int fruitprice[] = {1, 4, 6, 2, 10, 3, 9, 7, 5, 8};
vector<tropical> fruitlist;
tropical fruit;
vector<tropical>::iterator it;
for(int i=0; i<10; i++)
{
fruit.name = fruitname[i];
fruit.price = fruitprice[i];
fruitlist.push_back(fruit);
}
displayfruits(fruitlist);
sort (fruitlist.begin(), fruitlist.end(), sortByName);
displayfruits(fruitlist);
}
bool sortByName(tropical &t1, tropical &t2)
{
return t1.name < t2.name;
}
这是我得到的错误
In file included from c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/algorithm:63:0,
from ..srctutorial 3 - Constants and Formatting Decimals.cpp:2:
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h: In function '_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<tropical*, std::vector<tropical> >, _Tp = tropical, _Compare = bool (*)(tropical&, tropical&)]':
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:2265:78: instantiated from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<tropical*, std::vector<tropical> >, _Compare = bool (*)(tropical&, tropical&)]'
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:2306:62: instantiated from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<tropical*, std::vector<tropical> >, _Size = int, _Compare = bool (*)(tropical&, tropical&)]'
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:5445:4: instantiated from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<tropical*, std::vector<tropical> >, _Compare = bool (*)(tropical&, tropical&)]'
..srctutorial 3 - Constants and Formatting Decimals.cpp:56:61: instantiated from here
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:2233:4: error: invalid initialization of reference of type 'tropical&' from expression of type 'const tropical'
c:mingwbin../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:2236:4: error: invalid initialization of reference of type 'tropical&' from expression of type 'const tropical'
我尝试运行我在网络上找到的这个示例(下面附上的源代码),但我遇到了同样的问题? 为什么会这样?
http://www.daniweb.com/software-development/cpp/threads/242984/sorting-multiple-array-containers-with-related-elements#post1064721
您需要包含字符串头文件:
#include <string>
还要参考三重
bool sortByName(const tropical &t1, const tropical &t2);
查看实时样本。
您必须修改函数 sortByName 的声明和定义,以接收对热带的 const 引用,如下所示:
bool sortByName(const tropical &t1, const tropical &t2); //Prototype (declaration)
bool sortByName(const tropical &t1, const tropical &t2) //definition
{
return t1.name < t2.name;
}
尝试将 sortByName 的参数定义为 const。
// Declaration
bool sortByName(const tropical t1, const tropical t2);
// Implementation
bool sortByName(const tropical t1, const tropical t2)
{
return t1.name < t2.name;
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'