C++ 当我试图打印向量的内容时,编译器给出了错误?
基本上,我有一个.h文件,在其中我定义了一个函数来生成元素缓冲区和顶点压缩列表(对于OpenGL),给定一个未优化的顶点列表。但我遇到了一些问题,结果证明我无法访问传递给该方法的向量的内容。我的代码如下C++ 当我试图打印向量的内容时,编译器给出了错误?,c++,templates,vector,C++,Templates,Vector,基本上,我有一个.h文件,在其中我定义了一个函数来生成元素缓冲区和顶点压缩列表(对于OpenGL),给定一个未优化的顶点列表。但我遇到了一些问题,结果证明我无法访问传递给该方法的向量的内容。我的代码如下 #ifndef LEARNOPENGL_COMMON_H #define LEARNOPENGL_COMMON_H #include "ContextBase.h" // this includes all the OpenGL stuff #include "vector" #include
#ifndef LEARNOPENGL_COMMON_H
#define LEARNOPENGL_COMMON_H
#include "ContextBase.h" // this includes all the OpenGL stuff
#include "vector"
#include "iostream"
class common {
public:
template<typename V>
static bool are_equal(int size, V* v1, V* v2) {
for (int x = 0; x < size; x++) {
//if (v1[x] != v2[x]) return false;
}
return true;
}
template<typename V, typename E>
static void GenOptimizedArrays(const int vertex_size, std::vector<V>* vertex_source,
std::vector<V>* vertex_out, std::vector<E>* ebo_out) {
std::vector<V> * vertex_vector = new std::vector<V>();
std::vector<E> * element_vector = new std::vector<E>();
std::cout << vertex_source[0] << std::endl;
}
};
#endif //LEARNOPENGL_COMMON_H
我试着在网上搜索这个,但是,虽然我发现了类似的问题,但所有的东西都只是说使用迭代器,没有解释为什么我从解决方案中找到了答案,但是没有找到好的解释。你能帮忙吗?std::vector*vec=newvector;
std::vector<int> *vec = new vector<int>;
//std::cout<<vec[0];(1)
std::cout<<&vec[0];(2)
//std::coutstd::vector*vec=新向量;
//coutvertex_源代码是一个指针,而不是一个向量,所以您的代码与cout相同,也许您想使用引用?像这样:静态void基因优化阵列(const int vertex\u size,const std::vector&vertex\u source,std::vector&vertex\u out,std::vector&ebo\u out)
这样你就可以跳过向量的分配…@QuestionC很痛苦。谢谢,在容器中使用new
通常是错误的。vertex\u源是一个指针,而不是向量,因此您的代码与您的代码相同,您是否希望使用引用?像这样:静态void基因优化阵列(const int vertex\u size,const std::vector&vertex\u source,std::vector&vertex\u out,std::vector&ebo\u out)
这样你就可以跳过向量的分配…@QuestionC很痛苦。谢谢,在容器中使用new
通常是错误的。
std::vector<int> *vec = new vector<int>;
//std::cout<<vec[0];(1)
std::cout<<&vec[0];(2)