Я использую библиотеки rpcgen для создания приложения, где мне нужно использовать хэш-карту на стороне сервера. Целесообразно ли использовать библиотеки STL (или любой [код CN10]) с rpcgen? Я попытался скомпилировать файлы с помощью g++, и он работает. Или мне лучше реализовать что-то вроде связанного списка вместо хэш-карты (я предполагаю, что сложность не проблема), придерживаясь C?
Что-то вроде этого: мой входной файл
struct intpair {
int a;
int b;
};
program ADD_PROG {
version ADD_VERS {
int ADD(intpair) = 1;
} = 1;
} = 0x23451111;
(от http://www.cs.rutgers.edu/~pxk/rutgers/notes/rpc/index.html).
Я хочу использовать hashmap на стороне сервера. Я попытался сделать что-то подобное в файле на стороне сервера:
#include "add.h"
#include <map>
#include <string>
int *
add_1_svc(intpair *argp, struct svc_req *rqstp)
{
std::map<std::string, int> voteList;
static int result;
std::string s = "Aa";
voteList.insert(std::pair<std::string, int> ("ABC", 100));
printf("Add called\n");
return &result;
}
и это работает. Мне пришлось переименовать файлы и использовать g++.
Похоже, что компоненты C++ STL не "течет" через интерфейс, который вы реализуете, поэтому все должно быть хорошо и хорошо. Одна вещь, о которой нужно знать, это безопасность исключений: вы можете добавить блок try/catch верхнего уровня для преобразования любых исключений в соответствующую ошибку.