⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkdarts.cpp

📁 双数组建树代码
💻 CPP
字号:
#include <fstream>#include <string>#include <iostream>#include <cstdio>#include "darts.h"int progress_bar (size_t current, size_t total) {  static char bar[] = "*******************************************";   static int scale = sizeof(bar) - 1;  static int prev = 0;  int cur_percentage  = (int)(100.0 * current/total);  int bar_len         = (int)(1.0   * current*scale/total);  if (prev != cur_percentage) {     printf("Making Double Array: %3d%% |%.*s%*s| ", cur_percentage, bar_len, bar, scale - bar_len, "");     if (cur_percentage == 100)  printf("\n");     else                        printf("\r");     fflush(stdout);  }     prev = cur_percentage;  return 1;};int main (int argc, char **argv){  if (argc < 3) {    std::cerr << "Usage: " << argv[0] << " File Index" << std::endl;    return -1;  }  std::string file  = argv[argc-2];  std::string index = argv[argc-1];  Darts::DoubleArray da;  std::vector <Darts::DoubleArray::key_type *> key;  std::istream *is;  if (file == "-") {    is = &std::cin;  } else {    is = new std::ifstream (file.c_str());  }  if (! *is) {    std::cerr << "Cannot Open: " << file << std::endl;    return -1;  }  std::string line;  while (std::getline(*is, line)) {    char *tmp = new char [line.size()+1];    strcpy (tmp, line.c_str());//std::    key.push_back (tmp);  }  if (file != "-") delete is;  if (da.build (key.size(), &key[0], 0, 0, &progress_bar) != 0      || da.save (index.c_str()) != 0) {    std::cerr << "Error: cannot build double array  " << file << std::endl;    return -1;  };  for (unsigned int i = 0; i < key.size(); i++) delete [] key[i];  std::cout << "Done!, Compression Ratio: " <<     100.0 * da.nonzero_size() / da.size() << " %" << std::endl;  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -