У вас будет трудное время иметь дело с международными номерами с одним / простым регулярным выражением, см. этот пост о трудностях международных (и даже северных) телефонных номеров.
Вы хотите проанализировать первые несколько цифр, чтобы определить, что такое код страны, а затем действовать по-разному в зависимости от страны.
Кроме того - в списке, который вы указали, не содержится другой общий формат США - оставляя начальный 1. Большинство сотовых телефонов в США не требуют этого, и он начнет дезориентировать молодое поколение, если только они не набрали на международном уровне.
Вы правильно определили, что это сложная проблема ...
-адам
Так не получается. После того, как вы сдвинули назад свой k2, который указывает на некоторую память, которую вы выделили, вы сохранили ее в векторе. Таким образом, у вас есть указатель, указывающий на область памяти, которая имеет 10 в нем. После присвоения k3 k2, вы только изменили переменную-указатель, чтобы указывать на другую ячейку памяти, в которой есть 100. После этого вы даже не удалите k2, вы потеряли указатель на эту память. Это называется утечкой памяти.
Вы можете изменить указатель, который вы сохранили в своем векторе. Таким образом, у вас все еще есть доступ к вашим старым данным. Я также не рекомендую перезаписывать этот указатель. Вы не получите доступ к памяти, которую вы выделили для своих данных.
struct Node
{
Node()
{
visited_print = false;
visited_find = false;
}
bool visited_print;
bool visited_find;
int value;
std::vector<Node*> children;
Node *parent;
};
int main(){
Node *k1 = new Node();
Node *k2 = new Node();
k2->value = 10;
Node *k3 = new Node();
k3->value = 100;
k1->children.push_back(k2);
//k2 = k3;
delete k2;
k1->children[0] = k3;
}