在C语言中寻找对应类型 我想在C中翻译一个C++代码。我有一些C++类型,我不知道C。/P>中的对应类型。

在C语言中寻找对应类型 我想在C中翻译一个C++代码。我有一些C++类型,我不知道C。/P>中的对应类型。,c++,c,C++,C,C++类型:std::vector和map 我先谢谢你 ReturnCode CSVReader::GetConstValue(const char * material_code, const char * product_category, const char * material_name, const char * material_number, DataColumns ret_column, std::string & return_val) { std::map&

C++类型:
std::vector
map

我先谢谢你

ReturnCode CSVReader::GetConstValue(const char * material_code, const char * product_category, const char * material_name, const char * material_number, DataColumns ret_column, std::string & return_val)
{
    std::map<DataColumns, std::string> where_col;
    GetFixedColumns(where_col, material_code ? material_code : "", product_category ? product_category: "", material_name ? material_name : "", material_number ? material_number : "");
    return FindField(where_col, ret_column, return_val);
}
ReturnCode CSVReader::GetConstValue(常量字符*物料代码,常量字符*产品类别,常量字符*物料名称,常量字符*物料编号,数据列ret列,标准::字符串和返回值)
{
std::地图中的颜色;
GetFixedColumns(其中,物料列,物料代码?物料代码:,产品类别?产品类别:,物料名称?物料名称:,物料编号?物料编号:);
返回find字段(其中列、返回列、返回值);
}

< P> C++类型是由C语言中使用的基元建立的,但是某些语言特定的东西,比如析构函数,必须是同步化的。 向量基本上是一个结构,一些定义和一些函数

struct vector {
  size_type size;
  size_type capacity;
  int *data;
};
然后你会遇到模板的问题,但是这些模板基本上都是带有类型检查的宏,后者可能是个问题

#define vector(type) \
struct vector##type { \
  size_type size; \
  size_type capacity; \
  type *data; \
};
然后你必须添加任何特殊的c'tor,所有的成员函数,我认为它们必须是函数指针

我认为这将是太多的工作了,所以您可以只使用原始结构,然后按照特定类型所需的方式工作


映射可以由结构向量模拟,并在其上使用二进制搜索,您不希望实现红黑树。如果你能在C.找到一个哈希图,则你只需要支持原始数据类型作为标准。STD::MAPU必须自己实现。C中没有对应的类型。根据你的C++代码(我们没有看到),把它翻译成C可能是非常困难的。至少显示一些代码。为代码创建一个c包装器并创建一个链接到它的库要比重写代码容易得多,也更安全。是的,这适用于最简单的场景,但模拟析构函数或移动/复制语义将更加困难。@ Groo,这就是为什么C++使我的生活变得更容易,做所有额外的事情,并必须记住所有无聊的东西。