2012-03-28 2 views
-2
if(temp>final_hash_index_one) 
      { 
       string *tmp = new string[temp+1]; 
       std::copy(level_two, tmp, final_hash_index_one+1); 
       delete [] level_two; 
       level_two = tmp; 
      } 

Этот метод не работает и дает мне исключение, которое является «недопустимым нулевым указателем» !!копирование строки из одного массива указателей строки в другой

string *tmp = new string[some_size]; 
string *level_two = new string[some_size];  

Как скопировать содержимое с level_two на tmp ??? в случае строки один; строка вторая. мы можем скопировать строку через цикл. но что в этом случае ???

+4

Являются ли эти 'станд :: string'? Почему вы указали на это? Почему вы не используете 'std :: vector '? – birryree

+0

havent используемые векторы uptill сейчас, поэтому использование струн !! я делаю идеальное хэширование, поэтому имею дело с динамически строковыми указательными массивами !! –

+0

level_two имеет строки в разных местах, в частности индексы. Я хочу динамически изменять размер массива level_two. для этого я хочу скопировать содержимое в tmp с новым размером, поместите другую строку в месте в temp, а затем перераспределите новый размер level_two, а затем скопируйте содержимое из tmp в level_two !! –

ответ

3

Во-первых, STL копия принимает форму

OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result); 

Итак, вы видите, что результат является последним аргументом.

Во-вторых, если вы находитесь в STL (это очень хорошо!), Вам больше не нужны массивы. Использование векторов строк:

vector<string> tmp(some_size); 
vector<string> level_two(some_size); 

Копирование из level_to в ТМР просто:

tmp = level_two; // (!) 
+0

любой способ выполнить эту операцию с помощью указательного массива строки? –

+0

Вы можете скопировать, используя цикл, строку по строке. Но опять же, векторы гораздо легче справиться. –

+0

ОК. будет ли это вложенной петлей? именно это и нужно знать! Как мне это сделать! Я спросил у своего друга со мной прямо сейчас, и мы пришли к тому же аргументу, что это будет строка с копией строки! попробовал несколько вещей, но дает исключение! как это сделать через цикл? –

Смежные вопросы