Я создал 2d массив с-строк с помощью:удаление символа ** правильно?
char ** my_array = new char*[N];
, а затем я инициализируется каждую строку с помощью:
my_array[i] = new char[M]; // where M is a varying number. assign values to my_array[i] later
Так что я очень много получил зубчатую 2d массив.
Я хотел продолжить и удалить все это так:
for(int i = 0; i < N; i++)
{ delete [] my_array[i]; }
заканчивающуюся на:
delete [] my_array;
для цикла дал мне НЕАР КОРРУПЦИЕЙ ERROR - почему?
************** ОБНОВЛЕНИЕ - полный код *********************
#define BOOST_TEST_MODULE ARGS
#define BOOST_LIB_DIAGNOSTIC
#include <string>
#include <vector>
#include <iostream>
#include <boost/test/unit_test.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/assign.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/assign/std/vector.hpp>
using namespace std;
using namespace boost;
using namespace boost::assign;
typedef vector<string> string_array;
BOOST_AUTO_TEST_CASE(test1)
{
string_array args = list_of
("aaa")("bbbb")("ccccccc")("dd")("eeeeeeeee")("ff")("g")("hhh");
string_array tokens;
string arg = "";
for(int i = 0; i < (int)args.size(); i++)
{
arg += args[i];
if(i != (int)args.size() - 1)
arg += " ";
}
split(tokens, arg, is_any_of(" "));
char ** new_args = NULL;
new_args = new char*[(int)tokens.size() + 1];
new_args[(int)tokens.size()] = 0;
for(int i = 0; i < (int)tokens.size(); i++)
{
new_args[i] = new char[(int)tokens[i].size()];
for(int j = 0; j <= (int)tokens[i].size(); j++)
{
if(j == (int)tokens[i].size())
new_args[i][j] = '\0';
else
new_args[i][j] = tokens[i][j];
}
}
for(int i = 0; i < (int)tokens.size(); i++)
{
std::cout << new_args[i] << std::endl;
}
for(int i = (int)tokens.size() - 1; i >= 0; i--)
delete new_args[i];
delete [] new_args;
}
Если у вас не установлен boost: конвертируйте BOOST_AUTO_TEST_CASE в main() и voil'a.
Что выше вещь делает: преобразует вектор в гольца **
Я не знаю ответа, но почему бы вам просто не использовать вложенный std :: vector? –
Возможно, вы имели в виду 'std :: vector'. –
avakar
nah, если бы я хотел использовать вектор, это было бы торт –
Maciek