我想在"操纵向量"函数中访问向量,方法与访问带有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)
你试过传递矢量作为参考吗?
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)
归档时间: |
|
查看次数: |
6864 次 |
最近记录: |