编译时出现:error: '>>' should be '> >' within a nested template argument list错误。
使用C++11之前标准的编译器会将">>“视为移位符号。
在'>>'中间加一个空格变成'> >'即可。
输出
for(const int& k : va) cout << k << " ";cout << endl;
或
vector::iterator it;
for (it=vec1.begin();it!=vec1.end();it++)
cout<<*it<<" ";
}
或
#include <algorithm>#include <iterator> // for ostream_iterator<>copy(va.begin(),va.end(),ostream_iterator<int>(cout," "));cout << endl;
或
template <class T>void show(const T& x){ cout << x << " ";} for_each(va.begin(),va.end(),show<int>); cout << endl;
二维输入
for (vector<vector>::iterator it = v.begin(); it < v.end(); it++) { for (vector::iterator vit = (*it).begin(); vit < (*it).end(); vit++) { cout << *vit << " "; } cout << endl; }
输入
while(cin >> temp) //如果不确定输入数字个数,可以用这bai种方式 { vec.push_back(temp); //填充数据 }
这是最后的代码
#include<iostream>
#include<vector>
using namespace std;
vector<vector<int> > ans;
vector<int> ansAns;
void dfs(vector<int>& candidates,int target,int i,vector<vector<int> >& ans,vector<int>& ansAns)
{
if(i==candidates.size()) return;
if(target==0) {ans.push_back(ansAns); return;}
dfs(candidates,target-candidates[i],i+1,ans,ansAns);
if(target-candidates[i]>0)
{
ansAns.push_back(candidates[i]);
dfs(candidates,target-candidates[i],i+1,ans,ansAns);
ansAns.pop_back();
}
}
vector<vector<int> > combinationSum2(vector<int>& candidates, int target) {
dfs(candidates,target,0,ans,ansAns);
return ans;
}
int main()
{int target;
cin>>target;
vector<int> candidates;
vector<int>::iterator it;
int temp;
cout<<"shuru"<<endl;
while(cin>>temp&&temp!='0')
{
candidates.push_back(temp);
}
cout<<"shuchu" ;
combinationSum2(candidates,target);
for (vector<vector<int> >::iterator it = ans.begin(); it < ans.end(); it++)
{
for (vector<int>::iterator vit = (*it).begin(); vit < (*it).end(); vit++)
{
cout << *vit << " ";
}
cout << endl;
}
return 0;
}