索引 2D 向量时'Reference to type const..'编译错误
'Reference to type const..' compile error while indexing 2d vector
当我将元素推送到另一个向量内的向量时,我收到编译错误。
void addElem(vector<vector<int> >& subsets, int elem){
int smallerSubsetSize = subsets.size();
for(int i = 0; i < smallerSubsetSize; i++){
vector<int> originalSubset = subsets[i];
subsets.push_back(originalSubset.push_back(elem));
}
vector<int> uniset;
uniset.push_back(elem);
subsets.push_back(uniset);
}
我收到以下错误:
powerset.cpp:11:27: error: reference to type 'const
std::__1::__vector_base<std::__1::vector<int, std::__1::allocator<int> >,
std::__1::allocator<std::__1::vector<int, std::__1::allocator<int> > >
>::value_type' (aka 'const std::__1::vector<int, std::__1::allocator<int> >')
could not bind to an rvalue of type 'void'
subsets.push_back(originalSubset.push_back(elem));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/usr/include/c++/v1/vector:688:62: note: passing
argument to parameter '__x' here
_LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);
^
1 error generated.
我无法理解编译器想说什么。我尝试按值传递向量以及仅将代码放在 main 中。
这是我的完整代码,以防万一很重要:
// CtCI 8.4
#include <iostream>
#include <vector>
using namespace std;
void addElem(vector<vector<int> >& subsets, int elem){
int smallerSubsetSize = subsets.size();
for(int i = 0; i < smallerSubsetSize; i++){
vector<int> originalSubset = subsets[i];
subsets.push_back(originalSubset.push_back(elem));
}
vector<int> uniset;
uniset.push_back(elem);
subsets.push_back(uniset);
}
void printVector(const vector<int> &v){
for(int i = 0; i < v.size(); i++){
cout << v[i] << " ";
}
cout << endl;
}
int main(){
// set size
int n;
cin >> n;
vector<int> set(n);
for(int i = 0; i < n; i++){
cin >> set[i];
}
vector<vector<int> > subsets;
for(int i = 0; i < set.size(); i++){
addElem(subsets, set[i]);
}
// print subsets
for(int i = 0; i < subsets.size(); i++){
printVector(subsets[i]);
}
}
void addElem(vector<vector<int> >& subsets, int elem){
int smallerSubsetSize = subsets.size();
vector<int> originalSubset;
for(int i = 0; i < smallerSubsetSize; i++)
{
originalSubset = subsets[i];
originalSubset.push_back(elem);
subsets.push_back(originalSubset);
/*by doing this, we are passing vectortype as argument to push_back(),
do not pass argument in push_back() as void,
as originalSubset.push_back(elem) return void as return type */
}
vector<int> uniset;
uniset.push_back(elem);
subsets.push_back(uniset);
}
参考: http://www.cplusplus.com/reference/vector/vector/push_back/
相关文章:
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- 如何修复" State Error (active) E0513 a value of type "const wchar_t *" cannot be assigned to an entity o
- 索引 2D 向量时'Reference to type const..'编译错误
- 为什么指针没有隐式转换为 <type> const*const
- const TYPE&- 我什么时候想通过引用 const 来使用?
- std::tuple::get return const Type&&
- std::remove_if 将“const type”作为“this”参数传递会丢弃 Linux 上的限定符
- `type'和`const type'的类型特征
- 当您声明"pointer type"形式(函数)参数"like an const array"时,什么是常量?
- 如何修复C++编译器错误"cannot convert 'Type' to 'const Type*'"?
- c++ C2440 错误无法从"const BWAPI::UpgradeType"转换为"const BWAPI::Type *"
- C++ 错误 C2662 无法将"this"指针从"const Type"转换为"Type &"
- 错误:调用"CBNET::CBNET(boost::reference_wrapper<const CBNET>::type&)"没有匹配函数
- 我很困惑为什么我的 fillDeck 函数说,"assigning to 'char *' from incompatible type 'const char *"
- "invalid initialization of non-const reference of type..." 克隆() 函数错误
- 没有匹配的操作数[template]/无法从Type const*转换为Type
- "invalid cast from type 'const myClass' to type 'int'",如何使其有效?
- 无法理解此错误... "Type 'const intSet' does not provide a subscript operator"这是与所有星号一致的
- 使用 Qt:使用 QList<Type *const> 时从 const void* 到 void* 的转换无效
- 为什么"TYPE* const"指针的行为不同?