• C++ code:动态内存


    C++给我们提供了动态内存分配的new和delete操作。一般而论,new和delete操作多用在内存需求捉摸不定的场合。然而,需要处理的数据,如果变动范围很小,我们可以用STL中通用型的容器来做,大多数的情况都可以搞定。因为容器多能适应小量的变动需求。

    1 动态内存之预留向量空间

    例:清点单词数:

     1 #include<iostream>
     2 #include<fstream>
     3 #include<sstream>
     4 #include<vector>
     5 #include<map>
     6 using namespace std;
     7 typedef multimap<int, int> Mmap;
     8 
     9 int main()
    10 {
    11     ifstream in("abc.txt");
    12     vector<string> abc;
    //abc.reserve(1100);
    13 Mmap nums; 14 int n = 0; 15 for (string s; getline(in, s);) 16 { 17 istringstream sin(s); 18 int num = 0; 19 for (string t; sin >> t;num++) 20 if (num) 21 { 22 nums.insert(Mmap::value_type(num,n++)); 23 abc.push_back(s); 24 } 25 } 26 for (Mmap::iterator it = nums.begin(); it != nums.end(); ++it) 27 cout << abc[it->second] << endl; 28 }

    动态内存之蛮做素数判断

    例:求素数个数

     1 #include<iostream>
     2 #include<cmath>
     3 
     4 using namespace std;
     5 
     6 bool isPrime(int n)
     7 {
     8     int sqrtn = sqrt(n*1.0);
     9     for (int i = 2; i <= sqrtn;++i)
    10     if (n%i == 0) return false;
    11     return true;
    12 }
    13 
    14 int main()
    15 {
    16     int num = 0;
    17     for (int i = 2; i <= 100000000;++i)
    18     if (isPrime(i))
    19         num++;
    20     cout << num << endl;
    21 }

    动态内存之空间换时间

    例:求素数个数筛法版

     1 #include<iostream>
     2 #include<bitset>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     bitset<100000000>* p = new bitset<100000000>;
     9     p->set();
    10 
    11     for (int i = 2; i <= 10000; ++i)
    12     if (p->test(i))
    13     for (int j = i*i; j < p->size(); j += i)
    14         p->reset(j);
    15 
    16     int num = 0;
    17 
    18     for (int i = 2; i <= 100000000;++i)
    19     if (p->test(i))
    20         num++;
    21     cout << num << endl;
    22 
    23     delete[] p;
    24 }

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
    Linux 系统时间设置
    Redis入门
    线程安全的单例模式
    redis-Sentinel配置
    openpose
    Qt5.11参考文档
    opencv3.3
    opencv3.4 win10 visual studio2017 opencv_contrib 编译
  • 原文地址:https://www.cnblogs.com/ariel-dreamland/p/9092217.html
Copyright © 2020-2023  润新知