24. maj 2010 - 20:46
Der er
10 kommentarer og 1 løsning
Vectorer i c, ikke C++
Kan man lave vectorer i C, ikke C++ hvis man kan, hvordan?
Annonceindlæg fra COMM2IG
Nej. STL vector<> er en C++ feature. I C vil du bruge arrays og nogle funktioner til at manipulere disse.
Har du et forslag (evt. link) til at lave et "dynamisk" array som man kan ændre størrelse indtil der ikke længere bliver fyldt noget i det. Det handler om at jeg aflæser nogen spændingsstørrelser fra en ADC og afhængig af frekvensen så kommer der forskellig antal samples ind i systemet!
Du kan enten lave en linked liste eller goere det samme som vector goer - udvide array naar det loeber fuld. Jeg vil anbefale det sidste. Jeg kan godt lave et eksempel. Hvorfor skal du bruge ren C og ikke C++ ?
Hurtig bixet kode: #include <stdio.h> #include <stdlib.h> #include <string.h> struct vector { int used; int total; int *data; }; void init(struct vector *v) { v->used = 0; v->total = 3; v->data = (int *)malloc(v->total * sizeof(int)); } void add(struct vector *v, int val) { if(v->used + 1 > v->total) { v->total *= 2; v->data = (int *)realloc(v->data, v->total * sizeof(int)); } v->data[v->used] = val; v->used++; } void clear(struct vector *v) { free(v->data); v->used = 0; v->total = 0; v->data = NULL; } int main() { int i; struct vector iv; init(&iv); for(i = 0; i < 20; i++) { add(&iv, i); } for(i = 0; i < iv.used; i++) { printf("%d\n", iv.data[i]); } clear(&iv); return 0; }
C++ burde kunne koere paa 64 MB. Men du kan ogsaa lave noget C som vist ovenfor.
der er ikke plads til compileren samtidig med de andre applicationer der også skal være. der kan kun være effektivt 12 MB igang ad gangen!
Øhm. En ting er at compileren ikke kan køre samtidigt med resten, men det færdige program kunne måske godt køre alligevel.
Jeg har udviklet masser af C++ på embedded systemer med 32 MB RAM. C++ applikationer kræver ikke umiddelbart mere RAM end C applikationer. Det kommer helt an på, hvilken kode, du lader C++ generere for dig. Hvis det kun er compileren, der ikke er plads til, kan du jo f.eks. krydskompilere. Ellers er der ikke nogen mulighed for en dynamisk array, der ligner vector fra C++. Det tætteste, du kommer, er Arnes eksempel ovenfor.
09. juni 2010 - 20:08
#10
arne_v, kan du ikke poste er svar så du kan få dine point?
09. juni 2010 - 20:28
#11
kommer her
Kurser inden for grundlæggende programmering