在函数内访问类似数组[]的向量

use*_*281 0 c++ vector std

我想在"操纵向量"函数中访问向量,方法与访问带有vector [i]的数组相同,而不是在下面的代码中的(i)处使用vector->.我试图直接传递矢量,而不是像数组那样的指针.但这似乎破坏了该计划.任何想法如何实现这一目标?我是使用std库的新手,因为我主要有C的经验.

#include <vector>
#include <iostream>
#define vectorsize 5
struct st_test {
    int ii;
    float dd;
};

void manipulatevector(std::vector<struct st_test> *test) {
    test->resize(vectorsize);

    for(int i=0;i<vectorsize;i++) {
        test->at(i).dd = i*0.4f;
        test->at(i).ii = i;
    }
}

void manipulatearray(struct st_test test[vectorsize]) {
    for(int i=0;i<vectorsize;i++) {
        test[i].dd = i*0.4f;
        test[i].ii = i;
    }
}

void main() {
    std::vector<struct st_test> test1;
    manipulatevector(&test1);

    struct st_test test2[vectorsize];
    manipulatearray(test2);

    std::cout << "Vector" << std::endl;
    for(int i=0;i<vectorsize;i++) {
        std::cout << test1.at(i).dd << std::endl;
    }

    std::cout << "Array" << std::endl;
    for(int i=0;i<vectorsize;i++) {
        std::cout << test2[i].dd << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

nec*_*ciu 7

你试过传递矢量作为参考吗?

void manipulatevector(std::vector<struct st_test> &test) {
    test.resize(vectorsize);

    for(int i=0;i<vectorsize;i++) {
        test[i].dd = i*0.4f;
        test[i].ii = i;
    }
}
Run Code Online (Sandbox Code Playgroud)

std::vector<struct st_test> test1;
manipulatevector(test1);
Run Code Online (Sandbox Code Playgroud)