有谁知道任何C容器库?我正在寻找能够提供链接列表,数组,哈希表等标准实现的东西,就像C++ STL一样.主要关注点是:
玩指针C很有趣(不是真的).
我有几个字符串数组我想以简单的方式声明,最好是:
arrayOfStrings1 = {"word1", "word2", etc. };
arrayOfStrings2 = {"anotherword1", "anotherword2", etc. };
arrayOfStrings3 = etc.
etc.
Run Code Online (Sandbox Code Playgroud)
类似于翻译数组的东西(但不完全),所以我希望能够在运行时间间隔这些.为此,我想要一个pointerToArrayOfStrings我可以交换的指针:
pointerToArrayOfStrings = arrayOfStrings1;
doStuff();
pointerToArrayOfStrings = arrayOfStrings2;
doSomeOtherStuff();
Run Code Online (Sandbox Code Playgroud)
在我对字符串数组和指向这些字符串的指针的天真理解中,这就是我所尝试的:
// Danish transforms
const unsigned char* da_DK[] = {"b","bb","c","c","cc","d","dd","e","f","ff","g","gg","h","hh","j","j","jj","k","k","kk","l","l","l","l","ll","m","mm","n","n","nn","p","pp","r","r","r","rr","s","s","s","ss","t","t","tt","v","v","vv","æ"};
// British english transforms
const unsigned char* en_GB[] = {"a","a","a","a","a","a","a","a","a","a","a","a","a","age","ai","aj","ay","b","cial","cian","cian","dj","dsj","ea","ee","ege","ei","ei","eigh","eigh","f","f","f","g","g","gs","i","i","i","j","j","k","ks","kw","l","m","n","n","o","r","s","s","sd","sdr","sion","sion","sj","sj","tial","tion","tion","tj","u","u","u","u","w","ye","ye","z"};
// More languages....
const unsigned char** laguageStrings;
// Assign language
if (streq(language, "da-DK")){
laguageStrings= da_DK;
}
else if (streq(language, "en-GB")){
laguageStrings= en_GB;
}
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
语言是char …
我最近一直在使用 STL 的 unordered_map ,虽然它似乎工作得很好,但我不太明白散列函数是如何工作的,因为数据类型是作为模板参数给出的。为了更彻底地理解这个数据结构,我用 C++ 实现了我自己的小 Hashmap 类:
哈希表接口:
#ifndef _HASHMAP_H_
#define _HASHMAP_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <vector.h>
//Beginning of Hashmap class definition
template <class Key, class Value>
class Hashmap{
private:
int mappedElementCount;
public:
explicit Hashmap();
virtual ~Hashmap();
virtual void test();
virtual int hash(Key*);
int* getSize();
void putKVPair(Key*,Value*);
void clearMap();
//When we use these methods, we'll want a linear vector of keys and values to
//iterate over, so vector is good here
std::vector<Key>* getKeys(); …Run Code Online (Sandbox Code Playgroud) 我需要某种 C 语言的 HashSet,它的大小可以动态增长。我当然可以自己编写所有内容,但也许有一个很好的库?我的密钥是 32 位哈希值,我需要将指针 ( struct dirent *) 保存为值。
我有高级语言的编程经验,并且几周前开始使用普通C编码(出于学术原因).我想实现类似于的数据结构map<char,myStruct*>.
如果这还不够清楚:我希望将每个可能的SINGLE"映射" char到指向我在其他地方定义的结构的指针上.如果有一种方法可以确保没有2 char秒可以指向相同的struct(char在将新元素插入地图时不检查其他内容)那将是整洁的,但这不是绝对必要的.我还需要能够从地图中删除配对,并重新插入具有相同键但不同指针的配对.
我已经想到了这一点,并认为我可以创建一个指针数组所有可能的字符长度,并只使用char作为数组索引存储相应的指针(因为它只是一个数字常量).这可能非常有用,但如果我最终在我的应用程序中只使用几个字符,那么为地址分配那么多空间似乎效率低下.
尽管如此,我还是没有想到任何替代解决方案(考虑到我是C新手,不是那么令人惊讶).我会很感激任何,甚至模糊的建议,朝着正确的方向前进.
我是C的新手(不到一周),我正试图找出一种更有效的检索数据的方法.基本上想象我有几个股票数据:股票代码,价格,变化.
到目前为止,我的方法是将所有数据放在3个数组中.如果我想要IBM的价格,我搜索自动收报机数组并获取索引位置,然后从价格数组中获取该位置.它工作正常,但因为我做了很多查找,我的数据没有改变所以我想知道是否有更有效的方法来做到这一点?
我试图寻找一个字典/散列图来存储IBM作为键和价格/变化值作为值,但我似乎无法弄清楚如何在C中做到这一点.如果它可能有一个简单的方法去做这个?我正在研究一个不同的程序,并且真的不想学习如何从头开始创建自己的程序(尽管我必须这样做,我会对它进行处理).
我正在用C编写一个程序来读取FASTA文件和每个名字的文本(例如> COTV-SPAn232-096)我希望我的程序识别'>'然后在\n之前使用以下文本用作变量的名称.
对变量进行硬编码的问题是该程序需要尽可能动态,因为它可能在任意数量的不同数据集中读取.例如,我的测试集有15个不同的序列,如下所示:
COTV-SPAn232-096 MKILNSYNDFIISFINFILISTIQNVSISKLNILGYILSFIRIISISMDFDILKFSNIIQDYGLIFPDDIKKIQNEKFLVLERGLSGKLYAIHIYDFMARFDNETIFGIAKFLYRNNTKILDVLFINKDLFDKTDILYPKSTITLSSYSDEYIDYTYKTIKLIFLNLFNSFRFSKIDSKLSYLYLPLRKDINNVIL
计划以序列名称读取,将该名称设置为动态数组的变量,并使用malloc/realloc处理存储实际序列以便稍后比较所有不同序列.我可以处理除变量变量名之外的所有内容.
简单地四处寻找答案,看起来好像不能在C中完成,虽然可以在python和其他一些语言中.我真的希望这不是真实的情况,但是如果有人有其他建议来处理这个问题吗?是的,这是生物信息学,我可能应该使用python,perl,java或其他语言,但我宁愿在C中继续这个问题,以进一步精通C语言.
提前感谢我收到的任何答案!