创建三维数组 vector法

vector<vector<vector > > f(N+1,vector<vector >(N,vector(N)));
第一维 第二维 第三维和类型 1维容量 2维数组正常构建方式:vector<vector >(N,vector(N)) 动态数组

int *** p3 ; 三维指针就是三个*

p3 = new int**[hight] ;//第一维大小
for( i = 0 ; i < hight ; i ++ )
p3[i] = new int*[row] ; //第二维大小 for( i = 0 ; i < hight ; i ++ )
for( j = 0 ; j < row ; j ++ )
p3[i][j] = new int[col] ; //第三维大小

for( i = 0 ; i < hight ; i ++ )
for( j = 0 ; j < row ; j ++ )
delete [] p3[i][j] ; //释放第三维 for( i = 0 ; i < hight ; i ++ )
delete [] p3[i] ; //释放第二维 delete [] p3 ; //释放第一维 nth_element() STL中的nth_element()通过调用nth_element(start, start+n, end) ,可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的,类似快排的partition,平均时间复杂度O(n)。

to_string() string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); string to_string (unsigned long long val); string to_string (float val); string to_string (double val); string to_string (long double val) is_operator

//atoi 把字符串转成整型数 若string类型要转int类型 需要c_str将string转化为c中的字符数组 //stoi 将string转成整型数。 注意 结构体的指针若想改变结构体内容,只能对结构体中的元素进行操作,比如

prev->next = cur->next; 而直接进行指针的赋值操作,不会对结构体产生变化,这只是指针指向的地址发生改变,比如

cur = prev->next; 使用floor函数。 floor(x)返回的是小于或等于x的最大整数。 如: floor(10.5) == 10 floor(-10.5) == -11

使用ceil函数。 ceil(x)返回的是大于x的最小整数。 如: ceil(10.5) == 11 ceil(-10.5) ==-10

floor()是向负无穷大舍入,floor(-10.5) == -11; ceil()是向正无穷大舍入,ceil(-10.5) == -10

/ 第一种是to_string函数,这是C++11新增的,使用非常方便,简单查了下:C++11标准增加了全局函数std::to_string,以及std::stoi/stol/stoll等等函数(这几个就是string转int,long,以及long long啦~) to_string这个函数还是很强大的! string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); string to_string (unsigned long long val); string to_string (float val); string to_string (double val); string to_string (long double val) 不仅int可以转换成string,这些都可以哦~ /

测试有序序列中是否包含另一个序列的全部元素。

template bool includes(inputIterator1 first1, inputIterator1 last1,

inputIterator2 first2, inputIterator2 last2); template

bool includes(inputIterator1 first1, inputIterator1 last1,

inputIterator2 first2, inputIterator2 last2,

Comp cmp); 两个序列必须都是排序的且相同的排序,Comp必须和两个序列用相同的排序函数对象。

鉴于以上特点,用std::set作为容器比较好。

set_differrence:包含在第一个有序集合中,但不包含第二个有序集合中的元素,这些不同的元素复制到最后一个参数中,最后一个参数是一个保存这些元素的容器的首迭代器,这个容器必须预先分配足够的空间来容纳元素。这些不同的元素也是有序的且排序方式与源有序集合一样,另外Comp也必须和源有序集合采用同样的排序方式。

两个有序序列不可以有重叠。

返回的是在有序序列1而不是有序序列2中的元素。

template<class inputIterator1, class inputIterator2,

class outputIterator> outputIterator result =

set_difference(inputIterator1 first1, inputIterator1 last1,

inputIterator2 first2, inputIterator2 last2,

outputIterator first); template<class inputIterator1, class inputIterator2,

class outputIterator> outputIterator result =

set_difference(inputIterator1 first1, inputIterator1 last1,

inputIterator2 first2, inputIterator2 last2,

outputIterator first, Comp cmp); 还是用set容器比较好。

set_intersection:同时包含第一个和第二个集合中的元素,这些元素被复制到最后一个参数中,最后一个参数是一个保存这些元素的容器的首迭代器,这个容器必须预先分配足够的空间来容纳元素。两个集合都必须是有序的且是相同的排序。

基本上和set_difference用法一样,只是找出交集而已。还是用set。

set_symmetric_difference:包含在第一个集合但是不包含在第二个集合中的元素,包含在第2个集合但是不包含在第1个集合中的元素,同时被复制到最后一个参数中。用法跟基本上和set_difference用法一样。两个集合都必须是有序的且是相同的排序。

set_union:包含两个集合中所有元素的几个,同时被复制到最后一个集合中。 两个集合都必须是有序的且是相同的排序。

也就是求两个元素的公共元素,用法基本同set_difference。

pre_permutation:重排区间中的元素,使得源序列变成按照字典序列的上一个序列,其中的“上一个”可由用户自己定义。

template

bool pre_permutation(Iterator first, Iterator last);

template

bool pre_permutation(Iterator first, Iterator last, Comp cmp);

int main() { vector p; p.push_back(2); p.push_back(2); p.push_back(1); p.push_back(-1); p.push_back(0);

do { copy(p.begin(), p.end(), ostream_iterator(cout, “ “)); cout « “/n”; } while (prev_permutation(p.begin(), p.end())); }

next_permutation的用法同pre_permutation.

    i = s.find_first_of("aeiouAEIOU", i);
    j = s.find_last_of("aeiouAEIOU", j);

//这里是一个技巧,set迭代器支持自加自减,但不支持随机访问,所以不能用it-1,这个语句其实表达的意思和下面的语句相同, //if(it != st.begin() && (it-1)->end+1 >= val) it–; //如果符合条件,就it++,将it之前减的补回来,如果不符合条件,it-1.

//前面加0b表示二进制 //前面加0x表示十六进制 //前面加0表示八进制 fmod()函数可以对浮点型数据进行取模运算,后一个数可为0,这时函数返回NaN。 %只用于整型的计算,后一个数不能是0,参与运算的数据可正可负。