int main(int argc, char **argv) { if (argc < 2) { fprintf(stderr, "Usage:\n"); fprintf(stderr, "create_discodb discodb.out input.txt\n"); fprintf(stderr, "where input.txt contain a key-value pair on each line, devided by space.\n"); exit(1); } FILE *in; FILE *out; uint64_t size; char *data; struct ddb_cons *db = ddb_cons_new(); uint64_t flags = 0; flags |= getenv("DONT_COMPRESS") ? DDB_OPT_DISABLE_COMPRESSION: 0; flags |= getenv("UNIQUE_ITEMS") ? DDB_OPT_UNIQUE_ITEMS: 0; if (!db) { fprintf(stderr, "DB init failed\n"); exit(1); } if (!(in = fopen(argv[2], "r"))) { fprintf(stderr, "Couldn't open %s\n", argv[2]); exit(1); } if (getenv("KEYS_ONLY")) read_keys(in, db); else read_pairs(in, db); fprintf(stderr, "Packing the index..\n"); if (!(data = ddb_finalize(db, &size, flags))) { fprintf(stderr, "Packing the index failed\n"); exit(1); } ddb_cons_free(db); if (!(out = fopen(argv[1], "w"))) { fprintf(stderr, "Opening file %s failed\n", argv[1]); exit(1); } if (!fwrite(data, size, 1, out)) { fprintf(stderr, "Writing file %s failed\n", argv[1]); exit(1); } fclose(out); free(data); fprintf(stderr, "Ok! Index written to %s\n", argv[1]); return 0; }
int main() try { vector<string> names; vector<int> ages; read_pairs(names, ages); vector<string> names_copy = names; sort(names.begin(),names.end()); for (int i = 0; i < names.size(); i++) { cout << names[i] << " : " << ages[find_index(names, names_copy, i)] << endl; } } // Error processing catch (runtime_error& e) { cerr << e.what() << "\n"; } catch (...) { cerr << "Unknown exception\n"; }