我试图为矢量赋值,但是我收到了这个错误。有什么问题?
std::vector<bool> *boolVec = new std::vector<bool>(max, true);
boolVec[0] = false;
此代码有效:
boolVec->at(0) = false;
答案 0 :(得分:4)
尝试:
(*boolVec)[0] = false;
你有一个指针到一个向量,所以你必须先取消引用指针。
答案 1 :(得分:3)
你有一个指向向量的指针exec('cd /Path/To/Script(AndExecutable) && sudo -u User /Path/To/Script);
这不是你想要的。只需使用矢量:
std::vector<bool> *boolVec
矢量数据将存储在堆上。
如果你真的需要指针,那么你需要取消引用它。你可以使用
std::vector<bool> boolVec(max, true);
boolVec[0] = false;
或
(*boolVec)[0] = false;
请注意,使用 boolVec->at(0) = false;
将执行边界检查,可能会更慢。
答案 2 :(得分:1)
有几种方法可以使用下标运算符
例如
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("customized.output");
或
( *boolVec )[0] = false;
或
boolVec[0][0] = false;
这是一个示范程序
boolVec->operator []( 0 ) = false;
还可以考虑定义像
这样的矢量#include <iostream>
#include <iomanip>
#include <vector>
int main( void )
{
std::vector<bool> *boolVec = new std::vector<bool>( 6, true );
boolVec[0][0] = false;
( *boolVec )[2] = false;
boolVec->operator []( 4 ) = false;
for ( bool b : *boolVec ) std::cout << std::boolalpha << b << ' ';
std::cout << std::endl;
delete boolVec;
}
false true false true false true