所以我嘗試做一些像std::vector<int> WidthNumbers = 320, 640, 1280;
,但如果你的編譯器支持的C++ 0x編譯器給我的錯誤C2440: 'int' to 'std::vector<_Ty>'
如何修復std :: vector中的錯誤<int> WidthNumbers = 320,640,1280 ;?
1
A
回答
5
你不能使用該語法初始化一個vector
。的C++ 0x允許初始化列表,讓你可以使用以下命令:
std::vector<int> WidthNumbers = {320, 640, 1280};
但是,這並沒有在VS2010中實現。替代方案是:
int myArr[] = {320, 640, 1280};
std::vector<int> WidthNumbers(myArr, myArr + sizeof(myArr)/sizeof(myArr[0]));
OR
std::vector<int> WidthNumbers;
WidthNumbers.push_back(320);
WidthNumbers.push_back(640);
WidthNumbers.push_back(1280);
1
(MSVC++ 2010具有partial support for C++0x),你可以使用initializer list
std::vector<int> WidthNumbers = {320, 640, 1280};
+0
但是,VC++ 2010的部分支持不*包含此功能。 – 2012-04-29 14:15:29
2
您還可以使用boost::assign::list_of
#include <boost/assign/list_of.hpp>
#include <vector>
int
main()
{
typedef std::vector<int> WidthNumbers;
const WidthNumbers foo = boost::assign::list_of(320)(640)(1280);
}
0
這是稍微更多的工作,但我覺得它工作得很好VS 2010中。您可以使用_vector.push_back()
方法手動將項目添加到矢量,而不是使用初始化程序列表,如下所示:
//forward declarations
#include <vector>
#include <iostream>
using namespace std;
// main() function
int _tmain(int argc, _TCHAR *argv)
{
// declare vector
vector<int> _vector;
// fill vector with items
_vector.push_back(1088);
_vector.push_back(654);
_vector.push_back(101101);
_vector.push_back(123456789);
// iterate through the vector and print items to the console
vector<int>::iterator iter = _vector.begin();
while(iter != _vector.end())
{
cout << *iter << endl;
iter++;
}
// pause so you can read the output
system("PAUSE");
// end program
return 0;
}
這是我個人聲明和初始化向量的方式,它總是對我的作品
相關問題
- 1. std :: vector <std :: vector <T>> vs std :: vector <T*>
- 2. std :: vector <float> to std :: vector <glm::vecX>沒有複製
- 3. iterate std :: vector <std :: vector <char>>?
- 4. 修復使用Android NDK和std ::時發生的Eclipse錯誤:: vector
- 5. 如何從std :: vector <>
- 6. std :: bad_alloc錯誤與std :: vector
- 7. std :: map <MyClass,std :: vector <MyClass>>段錯誤。奇數
- 8. 錯誤`std :: vector <std :: unique_ptr < T >>`
- 9. unordered_map中的Seg錯誤<int,std :: vector <double>>
- 10. 展開std :: vector <std :: vector <T>>轉換爲std :: vector <T>
- 11. 修復(鎖)大小的std :: vector
- 12. 如何迭代boost :: variant <std :: vector <int>,std :: vector <String>>?
- 13. C++ std :: vector <std :: shared_ptr>
- 14. 如何到達2d std :: vector的第N個元素(`std :: vector <std :: vector <T>>`)?
- 15. 錯誤2664 - 無法從std :: vector <...>轉換爲std :: tr1 :: shared_ptr
- 16. C++ std :: sort on std :: vector <Object> - 錯誤太多
- 17. std :: vector <T>
- 18. 從std :: istreambuf_iterator <>複製到std :: vector <>
- 19. 錯誤與std :: vector push_back
- 20. 錯誤,而繼承std :: vector
- 21. 如何從C++向C++/CLI返回std :: vector <std :: vector <int>>?
- 22. 如何將std :: vector <unsigned short>轉換爲std :: vector <int>?
- 23. 計算std :: vector的中位數<double>導致段錯誤
- 24. 如何從std :: vector中恢復內存?
- 25. 解引用不能用於std :: vector <std :: vector <double>>
- 26. 將std :: vector <std :: vector <float>>轉換爲float **
- 27. 如何在不復制的情況下更新std :: unordered_map <std :: string,std :: vector <int>>中的向量?
- 28. std :: sort on std :: vector <std::string>
- 29. 將std :: map <int,vector <int>>複製到std :: map <std:string,vector <int>>
- 30. 如何將`std :: vector <uchar>`保存到`std :: ostream`中?
你能使用升壓? – 2010-12-05 15:29:47
是的,我可以使用boost。=) – Rella 2010-12-05 15:39:44