A negative number if the first string is ordinally less than the second string according to the ASCII character set, a positive number if the first string is greater than the second, and zero if the two strings are exactly equal.
Description
These functions can be used as comparison functions for sort and insert.
stricmp performs the same function as strcmp, but alphabetic characters are compared without regard to case. That is, “A” and “a” are considered equal by stricmp, but different by strcmp.
Assigns the content of a to b and the content of b to a.
(将a的内容给b,将b的内容给a。)
The behavior of this function template is equivalent to:
(该函数模板的实现如下:)
1234
template <class T>; void swap ( T& a, T& b )
{
T c(a); a=b; b=c;
}
Notice how this function involves a copy construction and two assignment operations, which may not be the most efficient way of swapping the contents of classes that store large quantities of data, since each of these operations generally operate in linear time on their size.
Because this function template is used as a primitive operation by many other algorithms, it is highly recommended that large data types overload their own specialization of this function. Notably, all STL containers define such specializations (at least for the standard allocator), in such a way that instead of swapping their entire data content, only the values of a few internal pointers are swapped, making this operation to operate in real constant time with them. Parameters a, b Two objects, whose contents are swapped. The type must be copy constructible and support assignment operations.
(类型T必须包含拷贝构造和支持赋值操作。)
Return value none
Example
12345678910111213141516171819
// swap algorithm example
#include <iostream>;
#include <algorithm>;
#include <vector>;
using namespace std;
int main ()
{
int x=10, y=20; // x:10 y:20
swap(x,y); // x:20 y:10
vector<int>; first (4,x), second (6,y); // first:4x20 second:6x10
swap(first,second); // first:6x10 second:4x20
cout << "first contains:";
for (vector<int>;::iterator it=first.begin(); it!=first.end(); ++it)
cout << " " << *it;
cout << endl;
return 0;
}
Output:
first contains: 10 10 10 10 10 10
Complexity
Constant: Performs exactly one copy construction and two assignments (although notice that each of these operations works on its own complexity).