C++
C++
_Mycat
翩翩舞翩翩,年年复年年。
展开
-
范围for循环取不到元素地址
在这里,it 是 csm.states 集合元素的拷贝。当你用 &it 获取 it 的地址时,你实际上获取的是这个拷贝元素的地址,而不是集合中元素的地址。当函数结束后,这个拷贝就会被销毁,所以你返回的指针就变成了悬空指针,也就是说,它指向的内存可能已经被重新分配给其他数据了。通过这种方式,it 是一个迭代器,指向 csm.states 中的实际元素。所以,&(*it) 给出的是实际元素的地址,而不是临时拷贝的地址。解决这个问题的一种方式是不使用范围for循环(也就是不使用for : ),而是使用迭代器。原创 2024-01-22 18:02:35 · 362 阅读 · 1 评论 -
欧拉筛(线性筛)
欧拉筛(线性筛) /求小于等于n的素数的个数/ #include<stdio.h> #include<string.h> using namespace std; int main() { int n,cnt=0; int prime[100001];//存素数 bool vis[100001];//保证不做素数的倍数 scanf("%d",&n); memset(vis,false,sizeof(vis));//初始化 memset(prime,0,sizeof(prim原创 2020-07-28 11:28:57 · 145 阅读 · 0 评论 -
素数筛
埃氏筛 #include <iostream> #include <bits/stdc++.h> using namespace std; bool prime[1000001]; int main() { int n; cin>>n; memset(prime,1,sizeof(prime)); prime[0]=prime[1]=0; for(int i=2; i<=n; i++) { while原创 2020-07-25 11:38:59 · 101 阅读 · 0 评论 -
数组“去重”与“排序”
“去重”与“排序” 输入有2行,第1行为一个正整数,表示需要输入n个数。(n<=100且输入的数不大于1000)。第2行有n个用空格隔开的正整数。 输出也是两行,第1行为一个正整数j,表示去重后剩余有j个数。第2行为j个用空格隔开的正整数,为上述输入数去重后从小到大已排好序的这样一个序列。 样例输入 10 20 40 32 67 40 20 89 300 400 15 样例输出 8 15 20 32 40 67 89 400 用到了三种解决方法: 1.桶排序:原创 2020-07-22 19:25:08 · 682 阅读 · 0 评论 -
快速排序
快速排序 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。 具体步骤为: 从数列中挑出一个元素,称为“基准”(pivot)。 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。 递归到最底部时,数原创 2020-07-21 18:42:24 · 75 阅读 · 0 评论 -
1005:质数因子
#include <iostream> using namespace std; int main() { int m; cin>>m; for(int i=2; i<=m; i++) { while(m%i==0) { m=m/i; cout<<i<<" "; } } return 0; }原创 2020-11-27 17:46:48 · 96 阅读 · 0 评论 -
装饰效果
装饰效果 #include <iostream> #include <string> #include<bits/stdc++.h> using namespace std; int a[1001]; int main() { int n; cin>>n; int MAX=0; int i,j,k,t=0; for(i=1; i<=n; i++) { cin>>a[i];原创 2020-08-07 21:55:06 · 226 阅读 · 0 评论 -
四平方和
四平方和 #include <iostream> #include <string> #include<bits/stdc++.h> #define MAX 0x7fffffff using namespace std; int main() { int n; cin>>n; int a,b,c,d; for(a=0; a<=1200; a++) { for(b=0; b<=1200; b原创 2020-08-07 18:43:17 · 96 阅读 · 0 评论 -
双截棍
双截棍 #include <iostream> #include <string> #include<bits/stdc++.h> #define MAX 0x7fffffff int a[101]; using namespace std; int main() { int n; cin>>n; int i,j,m=MAX,t; for(i=1; i<=n; i++) { cin>>原创 2020-08-08 10:41:48 · 102 阅读 · 0 评论 -
C++ STL实验
https://my.oschina.net/qiyong/blog/4673515转载 2020-10-19 20:55:25 · 159 阅读 · 0 评论