2009-03-03 22 views
1

Matheval kütüphanesi kullanıyorum.dizeleri/çiftleri vektörlerini dizilere dönüştür

Benim durumumda
#include<matheval.h> 

    char * evaluator_evaluate(void * evaluator, int count, char **names, double *values); 

, ben ** char isimleri ve değerlerin std :: vektörün std :: vector dönüştürmek istediğiniz ve çift *

: Its fonksiyonlar, örneğin, c-tarzı parametreleri almak Ayrıca, her isim benzersiz bir değere karşılık gelir ve tekrarlar olabilir. Veri yapıları açısından isimleri ve değerleri zarif bir şekilde düzenlemenin en iyi yolu nedir? Şimdilik, vektörleri kullanıyorum ve her ikisi de tekrarlar içeriyor.

Düzenle Lütfen ad ve değerlerin sırasının önemli olduğunu ve eşleşmesi gerektiğini unutmayın.

sayesinde

+0

STL Vektörlerini kullanıyor musunuz? Kopyalardan kurtulmaya mı çalışıyorsunuz? Verilerinizin sırasını korumak istiyor musunuz? – cbrulak

+0

Giriş vektörleriniz hangi formatta saklanır? Örneğin. vektörü mü? –

+0

evet, sipariş konuları, vektörler STL'den geliyor. Kopyalardan kurtulmak güzel olurdu. Soruları doğru bir şekilde düzenlememe izin verin. Yorum için teşekkürler. –

cevap

1

Dahili standart bir vector<> bir dizi denk olduğunu gerektirir. vector[0] adresini alabilir ve elde edilen işaretçi, verinin saklandığı bitişik bir bellek alanını vektörle aynı sırayla gösterecektir. Bu işaretçi, vector<> yeniden boyutlandırılana kadar geçerlidir.

std::string değerleri (veya bu konuyla ilgili başka herhangi bir nesne) için, ancak string nesnelerinden oluşan bir dizi elde edersiniz.

+0

greyfade, bu ilk problemimi iki katına çıkarır. İkincisi ne olacak? baska öneri? –

+0

Tek önerebileceğim bir char ** dizisi ayırmak ve onu string.c_str() işaretçileriyle başlatmaktır. Bu, eğer C işlevi onları değiştirmeyi umuyorsa sorunlara neden olabilir. – greyfade

+0

Belki başka bir veri yapısını kullanabilirim. Oldukça yaygın bir sorun - Eminim ki bir çözüm var :) –