声明(置顶)
本网站属个人分享网站,非营利性网站!
stack就是栈的容器,头文件<stack>,并且必须要有 using namespace std; ,但是stack只能访问栈顶
stack<int> st; | 常用函数功能 |
st.push(x) | 将x入栈 |
st.top() | 获取栈顶元素 |
st.pop() | 弹出栈顶元素 |
st.empty() | 判断stack是否为空,空为true,否则为false |
st.size() | 返回stack内元素个数 |
所有函数时间复杂度都为O(1)
注意:top()和pop()必须在栈不为空时使用,所以在使用之前一定要先判断栈是否为空
vector实际就是动态数组,头文件<vector>,并且必须要有"
using namespace std;"这行代码。随机存取任何元素都能在常数时间完成。在尾部增删元素具有较好的性能。
尾端插入和删除元素,算法时间复杂度都为O(1);其他元素插入和删除为O(n)
作用 | vector<int> v; | 常用函数功能 | 备注 |
内存分配 | v.capacity() | 当前可容纳的vector元素个数 | 使用之前应该分配好使用空间和内存 |
v.reserve(n) | 扩大容量为n | ||
v.at(i) | 返回索引所标识的元素。对i进行越界检查 | ||
v[i] | 返回索引所标识的元素。和数组用法几乎完全相同,不检查 | ||
元素存取 | v.front() | 返回第一个元素,不检查第一个元素是否存在 | |
v.back() | 返回最后一个元素,不检查最后一个元素是否存在 |
作用 | vector<int> v; | 常用函数功能 | 备注 |
插入元素 | v.insert(pos,e) | 在pos位置插入元素e的副本,并返回新元素位置 | 这三种操作涉及大量元素的移动,可能会产生严重影响效果 |
v.insert(pos,n,e) | 在pos位置插入n个元素e的副本 | ||
v.insert(pos,begin,end) | 在pos位置插入区间(begin,end)内所有元素的副本 | ||
v.push_back(20) | 尾端插入新元素的副本 |
作用 | vector<int> v; | 常用函数功能 | 备注 |
移除元素 | v.erase(pos) | 删除pos位置的元素,返回下一个元素的位置 | 由vector产生的迭代器持续有效,除非产生(1)插入元素;(2)容器变化引起内存重新分配 |
v.erase(begin,end) | 删除区间(begin,end)内所有元素,返回下一个元素的位置 | ||
v.pop_back() | 移除最后一个元素但不返回最后一个元素 | ||
v.clear() | 移除所有元素,清空容器 | ||
v.resize(num) | 将元素数量改为num(增加的元素用默认构造函数产生,多余的元素被删除) | ||
v.resize(num,e) | 将元素数量改为num(增加的元素是e的副本) | ||
v.empty() | 判断是否为空,空为true,否则为false | ||
v.size() | 返回元素个数 | ||
#include<bits/stdc++.h>
using namespace std;
double calculatePi(int n){
double pi = 0.0;
for(int i=0;i<n;i++){
pi+=4.0 * (1-(i%2)*2) / (2*i+1);
}
return pi;
int main(){
int n;
cout<<"迭代次数:"
cin>>n;
double approxPi = calculatePi(n);
cout<< "使用" << n << "次迭代得到的π近似值为:" << approxPi << endl;
转载至 https://blog.csdn.net/lei967809/article/details/138395509
在现代社会中,教育的方式和方法一直在不断地发展和变化。其中,“告诉家长”这一做法,似乎成了大部分老师处理学生问题时的常用手段。这种做法虽然在某些情况下能够起到一定的效果,但同时也引发了一些争议和讨论。
【老师告家长所带来的问题】
首先,我们必须承认,家长是孩子教育的第一责任人,他们对孩子的成长和行为有着不可推卸的责任。当孩子在学校出现问题时,老师与家长沟通是非常必要的,这有助于家长了解孩子在学校的表现,也有助于家长和老师共同找到解决问题的方法。 然而,如果“告诉家长”变成了一种频繁的手段,就会带来一些问题:
1.增大家长的压力:家长可能会因为频繁接到老师的“告状”而感到压力大,这不仅影响他们的工作,也可能让他们感到烦躁,从而将自己的情绪释放到孩子身上。
2.伤害孩子的自尊心:孩子可能会因为经常被“告状”而感到羞愧和自卑,这可能对他们的心理健康产生负面影响。 3. 影响师生和谐关系:频繁地“告诉家长”可能会让学生觉得老师不信任他们,这可能会影响师生之间的信任和关系。而且会有人怀疑老师的能力有问题。
3.妨碍教育的自主性:教育应该是一个引导和激励的过程,而不是简单的惩罚和控制。如果老师过于依赖“告诉家长”,可能会忽视了教育的真正目的。
【老师告家长的原因】
1 因为现在老师没有能力或者不愿意处理学生的问题 更准确的说,不是没有能力,而是不愿意花费精力(心力)为什么不愿意花费心力?因为老师的诉求 不是 真正的去了解学生的矛盾根源,也不是从根本上解决学生之间的恩怨矛盾,而是能够“快速高效”让学习环境变得安静,更看重集体的利益。
2 老师不敢管学生 老师怕学生家长投诉 家长为什么动不动就投诉老师呢?
假设老师怕家长举报老师管学生,那解决不了问题就解决产生问题的人以及计较问题的人,直接越过学生告诉家长或许效果反而更好
3 因为老师可以快速高效地联系到家长,比如用微信
举个例子,现在有微信,很多时候在我以及我的同学还没回家之前我们的父母就已经知道成绩了,为什么?就是因为微信的便利性,能让老师更方便的联系父母
【那老师应该怎么做呢】
我认为,老师在处理问题的时候应该先自主思考,如果解决不了在告诉家长,不能一味的依赖告诉家长!(孩子犯错误 老师的做法)
解决方案: 老师遇到学生问题了,可以先跟学生说,看看老师和学生之间能不能解决这个问题,如果学生和老师之间产生的矛盾已经大到一发不可收拾,不能解决了,再去告诉家长,让家长介入解决也不迟,如果学生的行为问题影响到其他学生或学校的正常运作,如重大违纪、欺凌同学等,老师应告知家长,并寻求家长的支持和合作来解决问题 。 (什么样的问题才需要告诉家长)
告诉学生家长的时候,要注意不要说对于学生来说影响家庭和睦或者对于学生来说很坏的话,会影响学生在家长严重形象的话。 (和家长沟通时 不要一味的指责甚至语言攻击学生,更不要破坏学生和家长之间的关系,而应该和家长合作,找到学生问题的根源以及解决方案)
教育是一个细致的工作,它需要老师、家长和孩子三方的共同努力。在这个过程中,我们应该寻求更加平衡和有效的方法,而不是简单地依赖某一种手段。通过理解和尊重孩子,以及与家长的合作,我们可以共同创造一个更加健康的教育环境。
Tips:当你看到这条Tips的时候,你就一定在看这条Tips吧
鸽子的我又来更新了~
程序中的所有数在计算机内存中都是以二进制的形式储存的。
位运算就是直接对整数在内存中的二进制位进行操作
为什么用?因为他快啊!
运算符 | 示例 | 作用 |
& (与) | a&b | a和b的二进制中表示中,相同位的两个数字都为1,才能是1 |
| (或) | a|b | 相同位只要一个为1即为1 |
︿ (异或) | a︿b | 如果某位不同则该位为1,否则该位为0 |
~ (取反) | ~a | 0和1全部取反 |
<< (左移) | a<<b | 就表示把a转为二进制后左移b位(在后面添b个0) |
>> (右移) | a>>b | 表示二进制右移b位(去掉末b位) |
----------------------------------------------------------------------------------------------------------------------
第三级别(既有右结合性) | |
! | 逻辑取反 |
not | !的另一种表达 |
~ | 按位取反 |
第五级别 | |
* | 乘法 |
/ | 除法 |
% | 取余数(横运算) |
第六级别 | |
+ | 加法 |
- | 减法 |
第七级别 | |
<< | 位左移 |
>> | 位右移 |
第八级别 | |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
第九级别 | |
== | 恒等于 |
eq | 恒等于 |
!= | 不等于 |
not_eq | 不等于 |
第十级别 | |
& | 位且运算 |
bitand | 位且运算 |
第十一级别 | |
︿ | 位异或运算 |
xor | 位异或运算 |
第十二级别 | |
| | 位或运算 |
bitor | 位或运算 |
--------------------------------------------------------------------------------------------------------------------------------
与应用
&运算:通常用于二进制取位操作
int A; cin>>A; if(a&1) cout<<"奇数"; else cout<<"偶数"
A&1的结果就是取A的二进制的最末位
--------------------------------------------------------------------------------------------------------------------------------
进制输入输出
头文件 :iomanip
dec:十进制
hex:十六进制
oct:八进制
%d:十进制
%x:十六进制
%o:八进制
//十六进制 int a; a=0x0027; cin>>hex>>a; a=027; cin>>oct>>a; cin>>dec>>a; cout>>oct>>a; printf("%x",a); printf("%o",a);
--------------------------------------------------------------------------------------------------------------------------------
#include<iostream> #include<cstdio> #include<climits> using namespace std; int main(){ cout<<INT_MAX<<endl; cout<<hex<<TNT_MAX<<endl; cout<<dec<<TNT_MIN<<endl; cout<<hex<<TNT_MIN<<endl; int a=0xffffffff; cout<<dec<<a<<endl; return 0; }
输出为: 2147483647 7fffffff -2147483648 80000000 -1
--------------------------------------------------------------------------------------------------------------------------------
求反应用
int main(){ int a=-7; int b=~a; cout<<b<<endl; a=7; b=~a; cout<<b<<endl; return 0; }9
输出: 6 -8
对一个有符号的数进行求反运算后,最高位的变化将导致正负颠倒,并且数的绝对值会差1。也就是说,~a实际上等于-a-1。
--------------------------------------------------------------------------------------------------------------------------------
右移运动
a>>b就表示把a转为二进制后右移b位。正数高位补0,负数高位补1.
相当于a除以2的b次方(取整)。
我们也经常用>>1来代替除2操作。
--------------------------------------------------------------------------------------------------------------------------------
取某些位:
int a=0x29; //(101001)2
取末位:
a&1
int main(){ int a=109; cout<<(a&1); return 0;
2.取末三位:
a&(111)下标2
a&(1000-1)下标2
a&((1<<3)-1)
3.取末k位:
a&((1<<k)-1)
--------------------------------------------------------------------------------------------------------------------------------
int a=0x29; //(101001)下标2
4.取右数第三位:
a>>2&1
5.取右数第k位:
(a>>k-1)&1
给某些位赋值:(赋1)
int a=0x2A; //(101010)下标2
1.最后一位变成一:
a|1
2.把右数第三位变成一:
a|1<<2
--------------------------------------------------------------------------------------------------------------------------------
给某些位赋值:(赋0)
int a=0x29; //(101001)下标2
最后一位变成0:
(a|1)-1
2.把右数的第四位变成零:
a&~(1<<3)
3.把右数第k位变成零
a&~(1<<k-1)
--------------------------------------------------------------------------------------------------------------------------------
给某些位赋值:(求反)
int a=0x29; //(101001)下标2
1、最后一位求反:
a^1
2、右数第3位求反:
a^1<<2
3、右数第k位求反:
a^1<<k-1
--------------------------------------------------------------------------------------------------------------------------------
1.如何O(1)的时间将一个数X的最低位的1去掉?
例如:
X=6 其二进制为:(110)下标2
X去掉最低位的1为:(110)下标2
x&(x-1)
2.如何O(1)的时间只保留一个数X的最低位的1?
例如:
X=6 其二进制为:(110)下标2
X只保留最低位1为:(10)下标2
说明:
lowbit(x)=x&(~x+1)
--------------------------------------------------------------------------------------------------------------------------------
补码中:
~x+1=-x
lowbit(x)=x&-x
XM.O-内部文章-请勿转载-谢谢
在现代社会中,教育的方式和方法一直在不断地发展和变化。其中,“告诉家长”这一做法,似乎成了大部分老师处理学生问题时的常用手段。这种做法虽然在某些情况下能够起到一定的效果,但同时也引发了一些争议和讨论。 首先,我们必须承认,家长是孩子教育的第一责任人,他们对孩子的成长和行为有着不可推卸的责任。当孩子在学校出现问题时,老师与家长沟通是非常必要的,这有助于家长了解孩子在学校的表现,也有助于家长和老师共同找到解决问题的方法。 然而,如果“告诉家长”变成了一种频繁的手段,就会带来一些问题: 1. 增大家长的压力:家长可能会因为频繁接到老师的“告状”而感到压力大,这不仅影响他们的工作,也可能让他们感到烦躁,从而将自己的情绪释放到孩子身上。 2. 伤害孩子的自尊心:孩子可能会因为经常被“告状”而感到羞愧和自卑,这可能对他们的心理健康产生负面影响。 3. 影响师生和谐关系:频繁地“告诉家长”可能会让学生觉得老师不信任他们,这可能会影响师生之间的信任和关系。而且会有人怀疑老师的能力有问题。 4. 妨碍教育的自主性:教育应该是一个引导和激励的过程,而不是简单的惩罚和控制。如果老师过于依赖“告诉家长”,可能会忽视了教育的真正目的。 1 因为现在老师没有能力或者不愿意处理学生的问题 更准确的说,不是没有能力,而是不愿意花费精力(心力) 为什么不愿意花费心力? 因为老师的诉求 不是 真正的去了解学生的矛盾根源,也不是从根本上解决学生之间的恩怨矛盾,而是能够“快速高效”让学习环境变得安静,更看重集体的利益。 2 老师不敢管学生 老师怕学生家长投诉 家长为什么动不动就投诉老师呢?(自己思考 问家长) 3 因为老师可以快速高效地联系到家长,比如用微信( 客观环境 ) 我认为,老师在处理问题的时候应该先自主思考,如果解决不了在告诉家长,不能一味的依赖告诉家长!(孩子犯错误 老师的做法) 解决方案: 老师遇到学生问题了,可以先跟学生说 什么样子的问题 需要告诉家长 告诉家长的时候,要注意什么 教育是一个细致的工作,它需要老师、家长和孩子三方的共同努力。在这个过程中,我们应该寻求更加平衡和有效的方法,而不是简单地依赖某一种手段。通过理解和尊重孩子,以及与家长的合作,我们可以共同创造一个更加健康的教育环境。 Tips:当你看到这条Tips的时候,你就一定在看这条Tips吧