|
|
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
я конечно понимаю вернуть массив из функции нельзя, а вот трюки обходящие это имеются? есть такое Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. есть РАБОТАЮЩИЙ вариант, но он на размерность меньше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 00:22 |
|
||
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
Почему нельзя-то ? Можно, возвращай на здоровье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 10:10 |
|
||
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
Надо просто new tdurl; писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 10:12 |
|
||
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
1 AFAIK массив из функции вернуть нельзя (8.3.5.6) 2 Да, можно в функции выделить память и вернуть указатель на нее 2.1 Кстати, кто будет эту память чистить потом? 3 Работающий вариант №2 работает потому, что возвращает вектор, а не массив векторов. 3.1 Если уж можно использовать контейнеры stl, то зачем гемор с динамическим выделением по new? Судя по исходнику, на этих граблях вам предстоят очень веселые пляски. Может лучше не усложнять ситуацию? Ниже я привел пример, который делает то, что вам надо, но без утечек памяти :) 3.2 Если угнетает размерность, так возвращайте vector<vector<string> > и нет проблем. 4. Возвращать контейнеры по значению... ммм... моветон. IMHO куда как лучше передавать их по ссылке и делать потом с ними все, что душе угодно... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 10:24 |
|
||
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
Если же говорить о "трюках", то можно воспользоваться тем фактом, что хотя массив вернуть из функции нельзя, можно вернуть структру. "Упаковываем" массив в struct и возвращаем ее. Если при этом еще перегрузить оператор [], то будет совсем кошерно. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Но все это велосипедостроительство. Лучше пользоваться нормальными контейнерами (п. 3.1) не забывая про п. 4 :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 10:54 |
|
||
|
возвращение массива из функции...
|
|||
|---|---|---|---|
|
#18+
ну есессно, это кусок кода, в полной программе память благополучно удаляется мною Ж) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и надо полагать что память у меня течёт когда я сам делаю new,а второй раз new делает push_back(), я правильно понял? или имелось в виду то что я её сам не освобождаю до завершения программы - delete[] id2; перед return 0;? и кстати, раз уж перегрузили [], то писать можно вместо res.m = i; просто res=i;... а то смысл применения структуры ускользает Ж)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 20:35 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2032638]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 396ms |

| 0 / 0 |
