没有明显的重载' ='在C ++向量中

时间:2015-11-24 21:24:51

标签: c++

我试图为矢量赋值,但是我收到了这个错误。有什么问题?

std::vector<bool> *boolVec = new std::vector<bool>(max, true);
boolVec[0] = false;

此代码有效:

boolVec->at(0) = false;

3 个答案:

答案 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