ostream,c排序—sort?
一、sort()是c++、java里对数组的元素进行排序的方法,包含于头文件algorithm。
返回值:
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
说明:
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数a和b,其返回值如下:
若a小于b,在排序后的数组中a应该出现在b之前,则返回一个小于0的值。
若a等于b,则返回0。(此时不排序)
若a大于b,则返回一个大于0的值。
程序示例:
在本例中,我们将创建一个数组,并按字母顺序进行排序:
<scripttype="text/javascript">vararr=newArray(6)arr[0]="George"arr[1]="John"arr[2]="Thomas"arr[3]="James"arr[4]="Adrew"arr[5]="Martin"document.write(arr+"<br/>")document.write(arr.sort())</script>
输出:
George,John,Thomas,James,Adrew,MartinAdrew,George,James,John,Martin,Thomas
二、partial_sort是C++STL中的函数
函数原型有:
partial_sort(beg,mid,end)
partial_sort(beg,mid,end,comp)
函数作用:
对mid-beg个元素进行排序,也就是说,如果mid-beg等于42,则该函数将有序次序中的最小值元素放在序列中
的前42个位置。partial_sort完成之后,从beg到mid(但不包括mid)范围内的元素时有序的,已排序范围内没有
元素大于mid之后的元素。未排序元素之间的次序是未指定的。
程序示例:
#include<vector>
#include<iterator>
#include<iostream>
#include<algorithm>
#include<functional>
#include<cstdlib>
#include<time.h>
usingnamespacestd;
intrand_int()
{
returnrand()%100;
}
voidprint(vector<int>&v,constchar*s)
{
cout<<s<<endl;
copy(v.begin(),v.end(),ostream_iterator<int>(cout,""));
cout<<endl;
}
boolcmp(int&a,int&b)
{
if(a>b)
returntrue;
returnfalse;
}
classcompare{
public:
booloperator()(constint&a,constint&b)
{
if(a<b)
returntrue;
returnfalse;
}
};
intmain()
{
srand(time(NULL));
vector<int>v;
generate_n(back_inserter(v),10,rand_int);
print(v,"产生10个随机数");
partial_sort(v.begin(),v.begin()+4,v.end());
print(v,"局部递增排序");
partial_sort(v.begin(),v.begin()+4,v.end(),cmp);
print(v,"局部递减排序");
partial_sort(v.begin(),v.begin()+4,v.end(),compare());
print(v,"局部递增排序");
return0;
}
里面ostream是干什么的?
ostream是outputstream的简称,即输出流。在C++中用来输出。一个典型的输出流对象就是在C++中标准输出流cout。在C++中,很少自定义ostream的对象,更多的是直接使用cout。ostream这个类型,往往出现在<<操作重载中,作为某个类的友元函数出现。
比如对于classA,可以定义ostream&operator<<(ostream&os,constA&a);这样在调用A的对象var时,cout<<var;就等同于调用这个函数了。函数里面一般会输出A中的一些成员变量。
cin和cout的区别?
cout和cin是C++语言中的输入输出流对象。它们的区别如下:cout用于输出数据到控制台,而cin用于从控制台输入数据。cout是C++标准库中的输出流对象,可以将数据输出到控制台。它可以输出各种类型的数据,如整数、浮点数、字符串等。而cin是C++标准库中的输入流对象,可以从控制台接收用户输入的数据。它可以接收各种类型的数据,并将其存储到对应的变量中。cout和cin是C++中常用的输入输出方式,它们使得程序能够与用户进行交互。通过使用cout和cin,我们可以方便地输出程序的运行结果或者接收用户的输入。cout和cin还可以与其他的输入输出流对象结合使用,实现文件的读写操作。因此,熟练掌握cout和cin的使用方法,对于开发C++程序非常重要。
put函数有什么用?
程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区。有时用户还有特殊的输出要求,例如只输出一个字符。ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put。如: cout.put('a');调用该函数的结果是在屏幕上显示一个字符a。put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式)。如 cout.put(65 + 32);也显示字符a,因为97是字符a的ASCII代码。可以在一个语句中连续调用put函数。如: cout.put(71).put(79).put(79). put(68).put('\n');在屏幕上显示GOOD。
通过Rectangle类计算周长和面积?
class rectangle
{
public:
Rectangle()
:m_width(1),m_length(1)
{
}
Rectangle(int length,int width)
{
if (test(length,width)) {
m_length = length;
m_width = width;
} else {
m_length = 1;
m_width = 1;
}
}
~Rectangle(){}
void Setwidth(int a)
{
if (test(m_length,a)) {
m_width = a;
} else {
std::cerr << "width must be a value between 1 to 20" << std::endl;
}
}
void setlength(int b)
{
if (test(b,m_width)) {
m_length = b;
} else {
std::cerr << "length must be a value between 1 to 20" << std::endl;
}
}
int Getwidth() const
{
return m_width;
}
int Getlength() const
{
return m_length;
}
bool test(int length,int width)
{
return (length >= 1 && length <= 20 && width >= 1 && width <= 20);
}
int perimeter() const
{
return ((m_width + m_length ) << 1);
}
int ares() const
{
return m_width * m_length;
}
friend std::ostream & operator << (std::ostream &os,const Rectangle &rect)
{
os << "Rectangle [ width : " << rect.m_width
<< " length : " << rect.m_length << " perimeter : "
<< rect.perimeter() << " ares : " << rect.ares()
<< " ]" << std::endl;
return os;
}
private:
int m_width,m_length;
};
int main()
{
Rectangle rect;
rect.setlength(10);
rect.Setwidth(15);
std::cout << rect ;
return 0;
}
还没有评论,来说两句吧...