关于C 语言中swap的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C 语言中swap的问题相关的知识,希望对你有一定的参考价值。
#include "stdio.h"
void swap(int x ,int y)
int t;
t=x;
x=y;
y=t;
main()
int a,b;
a=50; b=60;
swap(a,b);
printf("%d# %d#\n",a,b);
结果为50# 60#,为什么不是反过来,不是swap把两个数位置换了吗?
//////////////////////////////////////////////
#include <stdio.h>
void swap(int *x ,int *y)
int t;
t=*x;
*x=*y;
*y=t;
main()
int a,b;
a=50; b=60;
swap(&a,&b);
printf("%d# %d#\n",a,b);
参考技术A void swap(int* a, int* b)
int t = *a;
*a = *b;
*b = t;
swap(&a, &b); 参考技术B 函数参数的传递,只有在传地址才能将两个址传递。
#include <iostream>
using namespace std;
void swap(int *x ,int *y)
int t;
t=*x;
*x=*y;
*y=t;
void main()
int a,b;
a=50; b=60;
swap(&a,&b);
printf("%d# %d#\n",a,b);
这样输出的就是60# 50#了。
关于几类STL容器swap的复杂度问题
(swap)的方式有 (S1.swap(S2)) 或 (swap(S1,S2))
(vector,map,set,deque swap)复杂度:(O(1))
(priority\_queue,queue,stack swap)复杂度:(O(n))
特别要注意以上三种容器!!千万别在考场上写
但是在开启(c++11)的情况下这三种容器(swap)的复杂度可以做到(O(1))
以上是关于关于C 语言中swap的问题的主要内容,如果未能解决你的问题,请参考以下文章