- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定将 vector 传递给多个文件的正确方法。该代码对您来说可能看起来一团糟,实际上我试图放置最少的可重现代码。在文件中 match_read.cpp
,我正在尝试使用 vector 元素 std::vector<int> intref
,但我在 vector 中找不到任何东西。文件 perm.cpp
, index_read.cpp
, 和 index_ref.cpp
工作正常。打电话时 match_read.cpp
,代码不适用于第 4 个文件。我不确定是否将 vector 作为参数传递给其他 cpp
文件。
main.cpp
#include "index_read.h"
#include "perm.h"
#include "index_ref.h"
#include "match_read.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
int main()
{
int lenght = 3;
char str[] = {'A', 'G', 'C', 'T'};
int pos; // to hold positions of a vector element
int n = sizeof str;
for (int k = 1; k <= lenght; k++) //here we loop through all the possible lenghts 1, 2 and 3
{
print_str(str, "", n, k); //Note: this function works on all cases and not just the case above
}
std::string* permut_array = new std::string[NumberOfPermutations]; // the array that we will use to store the permutations in
std::copy(permutations.begin(), permutations.end(), permut_array); // here we copy the vector into the array
for (int k = 0; k < NumberOfPermutations; k++) //if you want you can use your array to print the permutation.
{
std::cout << permut_array[k] << std::endl;
}
std::cout<<"Total number of permutations is: "<<NumberOfPermutations<<std::endl;
index(permutations, str, read, intread); // calling index function
refindex(permutations, ref, refarr, intref); // calling reference index function
align_read(intref);
//align_read(permutations, refarr, intread, intref, matchedread, found); // matching DNA read with reference genome
return 0;
}
perm.cpp
#include "perm.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
int NumberOfPermutations = 0;
std::vector<std::string> permutations;
// The main recursive method to print all possible strings of length "length"
void print_str(const char str[],std::string prefix, const int n, const int lenght)
{
if (lenght == 1)
{
for (int j = 0; j < n; j++)
{
// i commented this ligne so that if you want to use your array to print your permutations you will not get a screnn with permutations printed 2 times
//std::cout << prefix + str[j] << std::endl;
permutations.push_back(prefix + str[j]); // the vector that we will use to store the permutations in
}
}//Base case: lenght = 1, print the string "lenght" times + the remaining letter
else
{
// One by one add all characters from "str" and recursively call for "lenght" equals to "lenght"-1
for (int i = 0; i < n; i++)
// Next character of input added
print_str(str, prefix + str[i], n, lenght - 1);
// "lenght" is decreased, because we have added a new character
}
NumberOfPermutations = permutations.size();
}
perm.h
#ifndef perm_h
#define perm_h
#include <iostream>
#include <string>
#include <vector>
void print_str(const char*,std::string,const int, const int);
extern int NumberOfPermutations;// = 0;
extern std::vector<std::string> permutations;
#endif
index_read.cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include "index_read.h"
std::string str = "AGCTGTACGCG";
int read[4];
std::vector<int> intread;
void index(std::vector<std::string> permutations, std::string, int read[4], std::vector<int> intread) // to get the index of a string from the permutation.
{
for( int i= 0; i<str.length(); i +=3)
{
std::cout<<"i: "<<i<<std::endl;
std::string str2 = str.substr (i,3);
std::cout<<"substring : "<<str2<<std::endl;
int pos1 = std::find(permutations.begin(), permutations.end(), str2) - permutations.begin();
intread.push_back(pos1); // pushing index of string into vector i.e. storing read into integer representation
read[i] = pos1;
std::cout<<"Read elements:"<<read[i]<<std::endl;
//std::size_t pos = str.find(str2);
std::cout<<"Position of "<<str2<< " : "<<pos1<<std::endl;
}
}
index_read.h
#ifndef index_read_h
#define index_read_h
#include <iostream>
#include <string>
#include <vector>
void index(std::vector<std::string> permutations, std::string, int read[4], std::vector<int> intread);
extern std::vector<int> intread;
extern std::string str;
extern int read[];
#endif
index_ref.cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include "index_ref.h"
//#include "variables.h"
//std::vector<std::string> permutations ;
std::string ref = "AAGCAGCTGTACGCT";
int refarr[3][6];
std::vector<int> intref;
void refindex (std::vector<std::string> permutations, std::string, int refarr[3][6], std::vector<int> intref) // to get the index of a string from the permutation.
{
for( int j = 0; j < 3; j++) // looping for maning n frames, where n is number of characters together
{ int k = 0; // Tracking the columns of array
std::string str4 = ref.substr(0, j+1);
std::cout<<"substring first : "<<str4<<std::endl;
int fstpos = std::find(permutations.begin(), permutations.end(), str4) - permutations.begin();
intref.push_back(fstpos);
std::cout<<"Fst element:"<<fstpos<<std::endl;
refarr[j][0] = fstpos;
std::cout<<"pos of fst element:"<<refarr[j][0]<<std::endl;
for( int i = j+1; i < ref.length(); i +=3) //loop for breaking the string into substrings
{ k = k+1;
std::cout<<"i: "<<i<<std::endl;
std::string str3 = ref.substr (i,3);
std::cout<<"substring : "<<str3<<std::endl;
int pos2 = std::find(permutations.begin(), permutations.end(), str3) - permutations.begin();
refarr[j][k] = pos2;
std::cout<<"printing array elements: "<<refarr[j][k]<<std::endl;
intref.push_back(pos2); // pushing index of string into vector i.e. storing reference into integer representation
//std::size_t pos = str.find(str2);
std::cout<<"Position of "<<str3<< " : "<<pos2<<std::endl;
}
}
}
index_ref.h
#ifndef index_ref_h
#define index_ref_h
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
void refindex (std::vector<std::string> permutations, std::string, int refarr[3][6], std::vector<int> intref); // function decleration for indexing the reference. string
extern std::string ref;
extern std::vector<int> intref;
extern int refarr[3][6];
#endif
match_read.cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include "match_read.h"
//std::vector<std::string> matchedread; // vector to store the matched read.
//bool found = false;
void align_read(std::vector<int> intref)
{
int offset;
std::cout<<"testing the error file: "<<std::endl;
for (std::vector<int>::const_iterator i = intref.begin();
i != intref.end(); ++i)
{
std::cout<<"Integer representation of reference: "<<*i<<std::endl;
}
}
match_read.h
#ifndef match_read_h
#define match_read_h
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
extern std::vector<int> intref;
void align_read(std::vector<int> intref);
#endif
最佳答案
您的 vector 被定义为全局变量和两个函数的参数。这些是不同的变量,因此当填充一个并访问另一个时,您看不到任何内容。
您应该只使用全局变量并去掉两个函数的参数,或者将 vector 作为参数传递,这意味着您不再需要 vector 的 extern
声明。
关于c++ - 将 vector 传递给cpp中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982601/
这个问题在这里已经有了答案: Why can templates only be implemented in the header file? (18 个答案) 关闭 7 年前。 我的 .hpp
我想使用 yaml-cpp 发出一个带引号的字符串,所以它看起来像 时间戳:“2011 年 8 月 10 日 01:37:52” 在输出yaml文件中。我该怎么做?谢谢。 最佳答案 YAML::Emi
我理解了模板的概念以及为什么我们需要在头文件中定义模板成员函数。另一种选择是在 cpp 文件中定义模板函数并显式实例化模板类,如下所示。 模板.h #include using namespace
是否可以发出和读取(解析)二进制数据(图像、文件等)?如下所示: http://yaml.org/type/binary.html我如何在 yaml-cpp 中执行此操作? 最佳答案 截至revisi
我尝试查找此内容并使用头文件等得到混合结果。 基本上我有多个 .cpp 文件,其中包含我为使用二叉树而制作的所有函数,BST , 链表等 我不想复制和粘贴我需要的函数,我只想能够做一个: #inclu
我正在发出一个 YAML 文档,如下所示: YAML::Node doc; // ...populate doc... YAML::Emitter out; out << doc; 在节点层次结构的某
这个问题在这里已经有了答案: Access extern variable in C++ from another file (1 个回答) 关闭 4 年前。 考虑以下场景: MyFile.cpp:
所以我在上基础编程课,我们正在学习如何将文件链接在一起。问题是我遇到了一个似乎没有人能够修复的错误。我已经去过我的教授、学生助理和校园里的编程辅助实验室,但运气不佳。 我还在这里搜索了至少 10 篇与
在下面的代码中,我在使用 parser.GetNextDocument(doc); 解析我的 .yaml 文件时遇到了一些问题。经过大量调试后,我发现这里的(主要)问题是我的 for 循环没有运行,因
我们有以下类(class)考试成绩:完成本类(class)的学生中有 75 人参加了考试。我们想知道学生在考试中的表现如何,并给出了 75 名学生的分数。我们想编写一个程序,按以下方式总结和分析结果:
主要.cpp #include #include #include #include "cootie.h" using namespace std; int main() { cout
试图制作电子鸡程序,但编译器抛出未定义的对“Tamagotchi::age()”错误的引用 理想情况下,这段代码会返回电子鸡的年龄,它应该在开始时由类的构造函数初始化为 0。 我显然在某个地方搞砸了,
我一直在开发一个使用 Microsoft Visual Studio 2010 命令提示符编译原始 .cpp 文件并分析其输出的应用程序。我遇到了很多麻烦,网上似乎没有太多关于这个的资料。这是麻烦的代
我试图从另一个 .cpp 文件调用 c++ 函数。我使用了 .h header 。看看下面我做了什么。 我有一个f.h文件: #ifndef PACKAGENAME_ADD_H #define PAC
我在 CPP 中有一个函数,其原型(prototype)如下: char* complexFunction(char* arg1, ...); 我使用 DLLImport 属性从 C# 导入它。问题是
也许这是一个幼稚的问题 - 但有没有办法构建/安装 yaml-cpp,以便在构建包含 yaml.h 的项目时不需要使用 Boost 库 header ? IE:我正在开发一个使用 yaml-cpp 结
我有一个在 .cpp 函数中声明的静态函数,我不能在 header 中声明它,因为它不应该是可见的。我想在同一项目的另一个 .cpp 中重新使用它。 这有可能吗? 最佳答案 这里有两个问题: 这可能吗
我正在使用 php-cpp 为我的 php 代码创建扩展,当我尝试编译 main.cpp 文件的简单结构时,我得到这个错误。这是编译错误: main.cpp:15:5: error: ‘PHPCPP_
我决定将必要的代码减少到显示此错误所需的最低限度。我有一个存在于 hc_list.h 文件中的 STL 列表包装器模板类。完整代码如下: // hc_list.h file #ifndef HC_LI
您好,我目前正在尝试通过 AMQPCPP 将 RabbitMQ 集成到我的 VisualStudio 项目中。我只能使用 Windows PC,这对安装来说是一件很痛苦的事情。我想我能够使用 CMAK
我是一名优秀的程序员,十分优秀!