C++ 当我试图打印向量的内容时,编译器给出了错误?

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

基本上,我有一个.h文件,在其中我定义了一个函数来生成元素缓冲区和顶点压缩列表(对于OpenGL),给定一个未优化的顶点列表。但我遇到了一些问题,结果证明我无法访问传递给该方法的向量的内容。我的代码如下

#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::cout
std::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)