![](/img/trans.png)
[英]C++ - copying vector in foreach gives "No matching function to call for std::vector<int>::push_back(std::vector<int>&)"
[英]C++ how to push_back an array int[10] to std::vector<int[10]>?
#include <vector>
using namespace std;
vector<int[60]> v;
int s[60];
v.push_back(s);
Visual Studio 2015社區中的此代碼報告編譯錯誤:
錯誤(活動)沒有重載函數的實例“std :: vector <_Ty,_Alloc> :: push_back [with _Ty = int [60],_ Alloc = std :: allocator]”匹配參數列表
錯誤C2664'void std :: vector> :: push_back(const int(&)[60])':無法將參數1從'int'轉換為'int(&&)[60]'
改為使用std::array
:
#include <vector>
#include <array>
using namespace std;
int main()
{
vector<array<int, 10>> v;
array<int, 10> s;
v.push_back(s);
return 0;
}
但我還要質疑包含數組的向量的目的。 無論是什么原因,都可能有更好的方法來實現相同的目標。
你可以這樣做:
#include <iostream>
#include <vector>
int main()
{
int t[10] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int*> v;
v.push_back(t);
std::cout << v[0][4] << std::endl;
return 0;
}
更具體地說,在這個解決方案中,你實際上並沒有將數組t的值存儲到向量v中,只是存儲指向數組的指針(並且更具體地說是數組的第一個元素)
我不確定你是說從數組初始化一個向量,如果是,這是一種使用vector的構造函數的方法:
int s[] = {1,2,3,4};
vector<int> v (s, s + sizeof(s)/sizeof(s[0]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.