Click here to Skip to main content
15,921,837 members
Home / Discussions / Managed C++/CLI
   

Managed C++/CLI

 
AnswerRe: Functions equivalent in C++ Pin
Dave Doknjas18-Jul-07 14:06
Dave Doknjas18-Jul-07 14:06 
GeneralRe: Functions equivalent in C++ Pin
C#Coudou22-Jul-07 19:16
C#Coudou22-Jul-07 19:16 
QuestionPath/String modification Pin
BuckBrown17-Jul-07 13:20
BuckBrown17-Jul-07 13:20 
AnswerRe: Path/String modification Pin
Luc Pattyn17-Jul-07 13:40
sitebuilderLuc Pattyn17-Jul-07 13:40 
GeneralRe: Path/String modification Pin
BuckBrown18-Jul-07 9:07
BuckBrown18-Jul-07 9:07 
GeneralRe: Path/String modification Pin
Luc Pattyn18-Jul-07 9:13
sitebuilderLuc Pattyn18-Jul-07 9:13 
AnswerRe: Path/String modification Pin
George L. Jackson17-Jul-07 13:53
George L. Jackson17-Jul-07 13:53 
Questionproblem in creating Dynamic Array library Pin
thdeofju17-Jul-07 8:14
thdeofju17-Jul-07 8:14 
i wonder somebody can help me to sort this program. all my hair already turn white Smile | :)
i'm trying to make dynamic array library which can expand, add, delete,..n sort of. actually this one is my programming class assignment. for some func i haven't got a clue how to do. here's details


template <typename t="">
class DArray
{
public:
DArray(); // create default obj which will have unitsize of 64
DArray(size_t); // create dynamic array
DArray(size_t, const T &); // darray which has logical size = input
DArray(const DArray &); // copy darray, right hand side
template <typename t2=""> // *don't know how to do this
DArray(const DArray<t2> &); //
~DArray(); // destructor
DArray& operator=(const DArray &); //?teacher said to throw bad_alloc. ??
template <typename t2=""> //*don't know this 1 either
DArray& operator=(const DArray<t2> &); //
T & operator[] (size_t); //throw (invalid index) this 1 also i dunno
const T & operator[] (size_t) const; // Sigh | :sigh: problem here 2
size_t size() const; // return the logical size of darray
void resize(size_t, const T & = T());//resize darray(logical)as user specify
void append(const T &); //add new data to darray
bool remove_last(); //remove last data from darray
void clear(); // not sure about this one
bool empty() const; // logical size empty or not
size_t capacity() const; //return the current buffer size
void reserve(size_t); //?get the buffer size as user want to. ??

private:
size_t arrSize;
size_t buffSize;
const unsigned unitSize;
unsigned char * myheap;
T * buffer;
};


template <typename t="">
DArray<t>::DArray() : arrSize(0), buffSize(0), buffer(NULL), myheap(NULL), unitSize(sizeof(T))
{
try { myheap = new unsigned char [unitSize * 32]
buffSize = 32;
buffer = reinterpret_cast<t*> (myheap); // dunno this one right or wrong
}
catch(std::bad_alloc &)
{
}
}

template <typename t="">
DArray<t>::DArray(size_t initSize) : arrSize(initSize), buffSize(initSize), buffer(NULL), myheap(NULL), unitSize(sizeof (T))
{
if( arrSize > 0 ){
if( arrSize < 32) buffSize = 32;
else buffSize = arrSize + 32;
myheap = new unsigned char [buffSize * unitSize];
buffer = new (myheap) T[arrSize];
}
}

template <typename t="">
DArray<t>::DArray(size_t initSize, const T & init_value) : arrSize(initSize), buffSize(initSize * 2), buffer(NULL), myheap(NULL), unitSize(sizeof(T))
{
if( arrSize > 0 ){
myheap = new unsigned char[buffsize * unitSize];
buffer = reinterpret_cast<t*> (myheap);
for (size_t i =0; i < arrSize; ++i)
new (buffer + i) T(init_value);
}
}

template <typename t="">
DArray<t>::DArray (const DArray & rhs) : arrSize(0), buffSize(0), buffer(NULL), myheap(NULL), unitSize(sizeof(T))
{
*this = rhs; // can i do something like this?
}

template <typename t2=""> // pls someone help don't know how to do this
DArray(const DArray<t2> &); //

template <typename t="">
DArray<t>::~DArray()
{
clear();
delete[] myheap;
}

template <typename t="">
DArray<t> & DArray<t>::operator= (const DArray<t> & rhs)
{
if( this == & rhs){
return * this;
}
else
{
clear();
arrSize = rhs.arrSize;
if( buffSize <= rhs.size()){
delete[] myheap;
buffSize = rhs.buffSize;
myheap = new unsigned char[buffSize * unitSize];
buffer = reinterpret_cast<t*> (myheap);
}
for( int i = 0; i < arrSize; i++){
new( buffer + i) T(rhs.buffer[i]);
}
}
return * this;
}

template <typename t2=""> //*don't know this 1 either
DArray& operator=(const DArray<t2> &);

template <typename t="">
T & operator[] (size_t); //

template <typename t="">
const T & operator[] (size_t) const;

template <typename t="">
size_t DArray<t>::size()const
{
return arrSize;
}

template <typename t=""> // hope this one correct
void DArray<t>::resize(size_t newSize, const T & = T())
{
if( newSize >= buffSize)
{
reverse ( newSize );
}
else arrSize = newSize;
}

template <typename t="">
void DArray<t>::append(const T & newItem) // need to used throw catch in this func ??
{
if( arrSize == buffSize){
size_t newCapacity = (buffSize + 1) * 2;
T * oldbuffer = buffer;
unsigned char * oldheap = myheap;
myheap = new unsigned char [buffSize * unitSize];
buffer = reinterpret_cast<t*> (myheap);
for( int i = 0; i < arrSize; ++i) {
new( buffer + i) T(oldbuffer[i]);
(&oldbuffer[i]) -> ~T(); // called destructor
}
delete[] oldheap;
buffSize = newCapacity;
}
reverse( newItem)
new (buffer + arrSize) T(newItem);
++arrsize;
}

template <typename t="">
void DArray<t>::clear()
{
for( size_t i = 0; i < arrSize; ++i)
( & buffer[i])-> ~T();
arrSize = 0;
}

template <typename t="">
bool DArray<t>::remove_last()
{
if ( empty()) return false;
--arrSize;
( & buffer[arrSize])->~T();
return true;
}


template <typename t="">
bool DArray<t>::empty() const throw()
{
if (arrSize == 0) return true;
else return false;
}

template <typename t="">
size_t DArray<t>::capacity() const
{
return buffSize;
}

template <typename t="">
void DArray<t>::reverse(size_t newSize)
{

//reverse to size which the user want
//help help
}

// pls correct me if i'm wrong
//thx in advance
AnswerRe: problem in creating Dynamic Array library Pin
Mark Salsbery17-Jul-07 8:32
Mark Salsbery17-Jul-07 8:32 
Question[C++/CLI]:impor huge file into memory Pin
ffgtrg1616g261217-Jul-07 7:21
ffgtrg1616g261217-Jul-07 7:21 
QuestionRe: [C++/CLI]:impor huge file into memory Pin
Mark Salsbery17-Jul-07 7:50
Mark Salsbery17-Jul-07 7:50 
AnswerRe: [C++/CLI]:impor huge file into memory Pin
ffgtrg1616g261217-Jul-07 11:08
ffgtrg1616g261217-Jul-07 11:08 
AnswerRe: [C++/CLI]:impor huge file into memory Pin
ffgtrg1616g261217-Jul-07 22:19
ffgtrg1616g261217-Jul-07 22:19 
GeneralRe: [C++/CLI]:impor huge file into memory Pin
Mark Salsbery18-Jul-07 5:43
Mark Salsbery18-Jul-07 5:43 
General3 Gb Memory Barrier Pin
George L. Jackson17-Jul-07 14:26
George L. Jackson17-Jul-07 14:26 
QuestionImplementation of CRC12,CRC16 Pin
Kiran Pinjala17-Jul-07 2:30
Kiran Pinjala17-Jul-07 2:30 
AnswerRe: Implementation of CRC12,CRC16 Pin
led mike17-Jul-07 4:56
led mike17-Jul-07 4:56 
Question(solved) strange thing_one digit missing when using %d for standard output [modified] Pin
bloodwinner17-Jul-07 2:15
bloodwinner17-Jul-07 2:15 
AnswerRe: (solved) strange thing_one digit missing when using %d for standard output Pin
Luc Pattyn17-Jul-07 3:09
sitebuilderLuc Pattyn17-Jul-07 3:09 
QuestionTo know the character strike Pin
mikobi16-Jul-07 22:28
mikobi16-Jul-07 22:28 
AnswerRe: To know the character strike Pin
Luc Pattyn16-Jul-07 23:23
sitebuilderLuc Pattyn16-Jul-07 23:23 
QuestionTo know the character strike Pin
mikobi16-Jul-07 22:24
mikobi16-Jul-07 22:24 
AnswerRe: To know the character strike Pin
Paul Conrad21-Jul-07 18:52
professionalPaul Conrad21-Jul-07 18:52 
Questionout parameters Pin
a.mulay16-Jul-07 20:37
a.mulay16-Jul-07 20:37 
AnswerRe: out parameters Pin
G Haranadh16-Jul-07 21:03
G Haranadh16-Jul-07 21:03 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.