我們如何將vector
變量傳遞給函數?我有一個vector
的char*
和一個函數,將採取char *
作爲一個參數。我怎樣才能將vector
變量傳遞給這個函數?如何將矢量變量傳遞給函數?
0
A
回答
3
如果您有一個採用char *參數的函數,那麼您只能傳遞向量中的一個char *。例如:
std::vector<char*> v;
char buf[] = "hello world";
v.push_back(buf);
the_function(v[0]);
如果你想調用向量中的每個成員的功能,只需循環:
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
the_function(*i);
編輯:根據您在下面的評論,你真的想編寫一個函數,接受向量作爲參數...嘗試:
void the_function(const std::vector<char*>& v)
{
// can access v in here, e.g. to print...
std::cout << "[ (" << v.size() << ") ";
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
std::cout << *i << ' ';
std::cout << " ]";
}
如果你要調用一個現有的功能,而你不想改變它的參數列表...
void TV_ttf_add_row(const char*, const char*, const void*);
...那麼,說出你所知道的載體將有足夠的元素:
assert(v.size() >= 3); // optional check...
TV_ttf_add_row(v[0], v[1], v[2]);
或
if (v.size() >= 3)
TV_ttf_add_row(v[0], v[1], v[2]);
,或者,如果你想要一個拋出的異常,如果沒有足夠的元素v
,然後...
try
{
TV_ttf_add_row(v.at(0), v.at(1), v.at(2));
}
catch (const std::exception& e)
{
std::cerr << "caught exception: " << e.what() << '\n';
}
(t他嘗試/ catch塊不必圍繞單個函數調用 - 只要v.at()
調用位於try
塊內的某個位置或直接或間接從該塊內部調用的函數)。
+1
或`std :: for_each(v.begin(),v.end(),the_function);` – 2011-02-04 07:52:57
0
您也可以使用它的索引訪問向量元素:
void f(char* s)
{
// do something with s
}
std::vector<char*> char_vect;
size_t len = char_vect.size();
for (size_t i=0; i<len; ++i)
f(char_vect[i]);
0
如果你需要一個std :: vector的內容傳遞給需要一個C數組的函數,你可以採取的地址向量的第一個元素:
void someCfunc(char *);
std::vector<char *> somevec;
// set up the vector ... then:
someCfunc(&somevec[0]);
無論其 - 小心你沒有得到的C字符串約定混了這裏! A std::vector
不會在字符串的末尾自動附加'\0'
;你必須手動完成。如果它只是一個字節緩衝區,則需要單獨傳遞向量大小。如果你將數據接收回矢量中,C函數不能自己擴展矢量,所以你應該事先確保矢量足夠大。
還要注意,這僅適用於std::vector
而不適用於其他STL容器。
相關問題
- 1. 如何將矢量傳遞給函數?
- 2. 將具有變量的矢量向量傳遞給函數
- 3. 將2d矢量傳遞給函數C++
- 4. 如何將變量傳遞給函數?
- 5. 將矢量傳遞給qsort
- 6. 如何將二維矢量傳遞給C++中的函數?
- 7. Node.js:如何將矢量傳遞給函數?
- 8. 將jQuery變量傳遞給Javascript函數
- 9. Python:tkinter:將變量傳遞給函數
- 10. 將PHP變量傳遞給JavaScript函數
- 11. 將變量傳遞給.html()函數
- 12. 將變量傳遞給jQuery .css()函數
- 13. printf函數將變量傳遞給javascript
- 14. 將變量傳遞給函數失敗
- 15. 將變量傳遞給ajax函數
- 16. 將Ajax變量傳遞給Codeigniter函數
- 17. 將PHP變量傳遞給JavaScript函數
- 18. 將$ _GET變量傳遞給javascript函數
- 19. 需要將變量傳遞給函數
- 20. 將php變量傳遞給javascript函數
- 21. 將變量傳遞給lambda函數
- 22. 將變量傳遞給函數範圍
- 23. 將變量傳遞給jQuery .load函數
- 24. 將變量傳遞給.animate()函數JQuery
- 25. 將PHP變量傳遞給Javascript函數
- 26. 將變量傳遞給setInterval函數
- 27. 將php變量傳遞給Javascript函數
- 28. 將php變量傳遞給jQuery函數
- 29. 將變量傳遞給函數
- 30. 將變量傳遞給函數
第一個即std :: vactor v; –
Balaji
2011-02-04 07:59:02